Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
2
合并请求
2
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
9d9bb0dc
提交
9d9bb0dc
authored
12月 24, 2025
作者:
huhuiqing
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
企业主页接口对接
上级
2b311cdd
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
131 行增加
和
43 行删除
+131
-43
index.js
src/api/companyPages/index.js
+21
-0
company.js
src/router/modules/company.js
+1
-1
index.vue
src/views/companyPages/index.vue
+109
-42
没有找到文件。
src/api/companyPages/index.js
0 → 100644
浏览文件 @
9d9bb0dc
// 企业主页接口信息
import
request
from
"@/api/request.js"
;
// 企业基本信息:基本信息
export
function
getEnterprisePageInfo
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/enterprisePage/info/
${
params
}
`
,
})
}
// 企业基本信息:主要人员
export
function
getEnterpriseKeyPerson
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/enterprisePage/keyPerson/
${
params
}
`
,
})
}
src/router/modules/company.js
浏览文件 @
9d9bb0dc
...
@@ -4,7 +4,7 @@ import companyPages from "@/views/companyPages/index.vue";
...
@@ -4,7 +4,7 @@ import companyPages from "@/views/companyPages/index.vue";
const
companyPagesRoutes
=
[
const
companyPagesRoutes
=
[
// 智库系统的主要路由
// 智库系统的主要路由
{
{
path
:
"/companyPages"
,
path
:
"/companyPages
/:id
"
,
name
:
"companyPages"
,
name
:
"companyPages"
,
component
:
companyPages
,
component
:
companyPages
,
meta
:
{
meta
:
{
...
...
src/views/companyPages/index.vue
浏览文件 @
9d9bb0dc
...
@@ -3,19 +3,15 @@
...
@@ -3,19 +3,15 @@
<!-- 公司导航栏 -->
<!-- 公司导航栏 -->
<div
class=
"company-nav"
>
<div
class=
"company-nav"
>
<div
class=
"company-logo-title"
>
<div
class=
"company-logo-title"
>
<img
:src=
"
data.company.logo"
alt=
"华为logo
"
class=
"logo-img"
/>
<img
:src=
"
infoData.logoUrl
"
class=
"logo-img"
/>
<div
class=
"title-group"
>
<div
class=
"title-group"
>
<h1
class=
"company-name"
>
{{
data
.
company
.
n
ame
}}
</h1>
<h1
class=
"company-name"
>
{{
infoData
.
orgN
ame
}}
</h1>
<p
class=
"company-english"
>
{{
data
.
company
.
englishName
}}
</p>
<p
class=
"company-english"
>
{{
infoData
.
orgNameEn
}}
</p>
</div>
</div>
</div>
</div>
<div
class=
"main-tabs"
>
<div
class=
"main-tabs"
>
<div
<div
v-for=
"(tab, index) in tabList"
:key=
"index"
:class=
"activeTab === tab.title ? 'tab-active' : 'tab'"
v-for=
"(tab, index) in tabList"
@
click=
"activeTab = tab.title"
>
:key=
"index"
:class=
"activeTab === tab.title ? 'tab-active' : 'tab'"
@
click=
"activeTab = tab.title"
>
<img
:src=
"activeTab === tab.title ? tab.activeIcon : tab.icon"
alt=
""
/>
<img
:src=
"activeTab === tab.title ? tab.activeIcon : tab.icon"
alt=
""
/>
{{
tab
.
title
}}
{{
tab
.
title
}}
</div>
</div>
...
@@ -25,28 +21,28 @@
...
@@ -25,28 +21,28 @@
<div
class=
"main-content"
v-if=
"activeTab === '基础信息'"
>
<div
class=
"main-content"
v-if=
"activeTab === '基础信息'"
>
<!-- 左侧信息栏 -->
<!-- 左侧信息栏 -->
<div
class=
"left-sidebar"
>
<div
class=
"left-sidebar"
>
<img
:src=
"
data.company.logo"
alt=
"华为logo
"
class=
"sidebar-logo"
/>
<img
:src=
"
infoData.logoUrl
"
class=
"sidebar-logo"
/>
<h2
class=
"sidebar-company-name"
>
{{
data
.
company
.
n
ame
}}
</h2>
<h2
class=
"sidebar-company-name"
>
{{
infoData
.
orgN
ame
}}
</h2>
<div
class=
"contact-list"
>
<div
class=
"contact-list"
>
<div
class=
"contact-item"
>
<div
class=
"contact-item"
>
<img
src=
"../../assets/icons/shutter.svg"
alt=
"网址"
class=
"contact-icon"
/>
<img
src=
"../../assets/icons/shutter.svg"
alt=
"网址"
class=
"contact-icon"
/>
<span>
{{
data
.
contactInfo
.
website
}}
</span>
<span>
{{
infoData
.
url
}}
</span>
</div>
</div>
<div
class=
"contact-item"
>
<div
class=
"contact-item"
>
<img
src=
"../../assets/icons/location.svg"
alt=
"地址"
class=
"contact-icon"
/>
<img
src=
"../../assets/icons/location.svg"
alt=
"地址"
class=
"contact-icon"
/>
<span>
{{
data
.
contactInfo
.
address
}}
</span>
<span>
{{
infoData
.
address
}}
</span>
</div>
</div>
<div
class=
"contact-item"
>
<div
class=
"contact-item"
>
<img
src=
"../../assets/icons/call.svg"
alt=
"电话"
class=
"contact-icon"
/>
<img
src=
"../../assets/icons/call.svg"
alt=
"电话"
class=
"contact-icon"
/>
<span>
{{
data
.
contactInfo
.
phone
}}
</span>
<span>
{{
infoData
.
tele
phone
}}
</span>
</div>
</div>
<div
class=
"contact-item"
>
<div
class=
"contact-item"
>
<img
src=
"../../assets/icons/mail.svg"
alt=
"邮箱"
class=
"contact-icon"
/>
<img
src=
"../../assets/icons/mail.svg"
alt=
"邮箱"
class=
"contact-icon"
/>
<span>
{{
data
.
contactInfo
.
email
}}
</span>
<span>
{{
infoData
.
email
}}
</span>
</div>
</div>
</div>
</div>
<!--接口未对接-->
<div
class=
"financial-list"
>
<div
class=
"financial-list"
>
<div
class=
"financial-item"
v-for=
"(item, idx) in data.financialData"
:key=
"idx"
>
<div
class=
"financial-item"
v-for=
"(item, idx) in data.financialData"
:key=
"idx"
>
<p
class=
"financial-value"
>
{{
item
.
value
}}
</p>
<p
class=
"financial-value"
>
{{
item
.
value
}}
</p>
...
@@ -59,12 +55,8 @@
...
@@ -59,12 +55,8 @@
<div
class=
"right-content"
>
<div
class=
"right-content"
>
<!-- 子标签栏 -->
<!-- 子标签栏 -->
<div
class=
"sub-tabs"
>
<div
class=
"sub-tabs"
>
<span
<span
v-for=
"(tab, idx) in tabListSmall"
:key=
"idx"
v-for=
"(tab, idx) in tabListSmall"
:class=
"['sub-tab', activeTabSmall === tab ? 'active' : '']"
@
click=
"activeTabSmall = tab"
>
:key=
"idx"
:class=
"['sub-tab', activeTabSmall === tab ? 'active' : '']"
@
click=
"activeTabSmall = tab"
>
{{
tab
}}
{{
tab
}}
</span>
</span>
<div
class=
"action-icons"
>
<div
class=
"action-icons"
>
...
@@ -80,27 +72,49 @@
...
@@ -80,27 +72,49 @@
<div
class=
"info-card"
>
<div
class=
"info-card"
>
<h3
class=
"section-title"
>
类别分布
</h3>
<h3
class=
"section-title"
>
类别分布
</h3>
<ul
class=
"info-list"
>
<ul
class=
"info-list"
>
<li
<li
style=
"display: flex; align-items: center"
>
v-for=
"(value, key) in data.categoryDist"
:key=
"key"
style=
"display: flex; align-items: center"
>
<div
class=
"li-icon"
></div>
<div
class=
"li-icon"
></div>
<span
class=
"info-key"
>
{{
key
}}
</span>
<span
class=
"info-key"
>
企业类型
</span>
<span
class=
"info-value"
>
{{
value
}}
</span>
<span
class=
"info-value"
>
{{
infoData
.
nsIndustryCategory
}}
</span>
</li>
<li
style=
"display: flex; align-items: center"
>
<div
class=
"li-icon"
></div>
<span
class=
"info-key"
>
机构代码
</span>
<span
class=
"info-value"
>
{{
infoData
.
uscc
}}
</span>
</li>
<li
style=
"display: flex; align-items: center"
>
<div
class=
"li-icon"
></div>
<span
class=
"info-key"
>
成立时间
</span>
<span
class=
"info-value"
>
{{
infoData
.
createTime
}}
</span>
</li>
<li
style=
"display: flex; align-items: center"
>
<div
class=
"li-icon"
></div>
<span
class=
"info-key"
>
创办人
</span>
<span
class=
"info-value"
>
{{
infoData
.
legalRepresentative
}}
</span>
</li>
</li>
</ul>
</ul>
</div>
</div>
<div
class=
"info-card"
>
<div
class=
"info-card"
>
<h3
class=
"section-title"
>
经营信息
</h3>
<h3
class=
"section-title"
>
经营信息
</h3>
<ul
class=
"info-list"
>
<ul
class=
"info-list"
>
<li
<li
style=
"display: flex; align-items: center"
>
v-for=
"(value, key) in data.businessInfo"
<div
class=
"li-icon"
></div>
:key=
"key"
<span
class=
"info-key"
>
总部地点
</span>
style=
"display: flex; align-items: center"
<span
class=
"info-value"
>
{{
infoData
.
address
}}
</span>
>
</li>
<li
style=
"display: flex; align-items: center"
>
<div
class=
"li-icon"
></div>
<span
class=
"info-key"
>
标语口号
</span>
<span
class=
"info-value"
>
{{
value
}}
</span>
</li>
<li
style=
"display: flex; align-items: center"
>
<div
class=
"li-icon"
></div>
<span
class=
"info-key"
>
业务范围
</span>
<span
class=
"info-value"
>
{{
infoData
.
businessScope
}}
</span>
</li>
<li
style=
"display: flex; align-items: center"
>
<div
class=
"li-icon"
></div>
<div
class=
"li-icon"
></div>
<span
class=
"info-key"
>
{{
key
}}
</span>
<span
class=
"info-key"
>
所有权者
</span>
<span
class=
"info-value"
>
{{
value
}}
</span>
<span
class=
"info-value"
>
{{
value
}}
</span>
</li>
</li>
</ul>
</ul>
...
@@ -115,15 +129,15 @@
...
@@ -115,15 +129,15 @@
</div>
</div>
<div
class=
"personnel-grid"
>
<div
class=
"personnel-grid"
>
<div
class=
"personnel-card"
v-for=
"(person, idx) in
data.
mainPersonnel"
:key=
"idx"
>
<div
class=
"personnel-card"
v-for=
"(person, idx) in mainPersonnel"
:key=
"idx"
>
<div
class=
"personnel-card-header"
>
<div
class=
"personnel-card-header"
>
<img
:src=
"person.avatar
"
alt=
"头像
"
class=
"person-avatar"
/>
<img
:src=
"person.avatar
Url
"
class=
"person-avatar"
/>
<div
class=
"person-info"
>
<div
class=
"person-info"
>
<h4
class=
"person-name"
>
{{
person
.
name
}}
</h4>
<h4
class=
"person-name"
>
{{
person
.
name
}}
</h4>
<p
class=
"person-position"
>
{{
person
.
position
}}
</p>
<p
class=
"person-position"
>
{{
person
.
position
}}
</p>
</div>
</div>
</div>
</div>
<
p
class=
"person-desc"
>
{{
person
.
desc
}}
</p
>
<
div
class=
"person-desc"
>
{{
person
.
introduction
}}
</div
>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -158,14 +172,16 @@
...
@@ -158,14 +172,16 @@
</
template
>
</
template
>
<
script
setup
>
<
script
setup
>
import
{
ref
}
from
"vue"
;
import
{
ref
,
onMounted
}
from
"vue"
;
import
data
from
"./data/huaweiData.json"
;
import
data
from
"./data/huaweiData.json"
;
import
movementData
from
"./data/movement.json"
;
import
movementData
from
"./data/movement.json"
;
import
Timeline
from
"./component/Timeline.vue"
;
import
Timeline
from
"./component/Timeline.vue"
;
import
Capability
from
"./component/Capability.vue"
;
import
Capability
from
"./component/Capability.vue"
;
import
SanctionsSituation
from
"./component/SanctionsSituation.vue"
;
import
SanctionsSituation
from
"./component/SanctionsSituation.vue"
;
import
SupplyChain
from
"./component/SupplyChain.vue"
;
import
SupplyChain
from
"./component/SupplyChain.vue"
;
import
{
useRouter
}
from
"vue-router"
;
import
{
getEnterprisePageInfo
,
getEnterpriseKeyPerson
}
from
"@/api/companyPages/index.js"
;
import
TabIcon1
from
"./images/tab-icon1.png"
;
import
TabIcon1
from
"./images/tab-icon1.png"
;
import
TabIcon2
from
"./images/tab-icon2.png"
;
import
TabIcon2
from
"./images/tab-icon2.png"
;
import
TabIcon3
from
"./images/tab-icon3.png"
;
import
TabIcon3
from
"./images/tab-icon3.png"
;
...
@@ -175,6 +191,7 @@ import TabIcon2Active from "./images/tab-icon2-active.png";
...
@@ -175,6 +191,7 @@ import TabIcon2Active from "./images/tab-icon2-active.png";
import
TabIcon3Active
from
"./images/tab-icon3-active.png"
;
import
TabIcon3Active
from
"./images/tab-icon3-active.png"
;
import
TabIcon4Active
from
"./images/tab-icon4-active.png"
;
import
TabIcon4Active
from
"./images/tab-icon4-active.png"
;
const
router
=
useRouter
();
const
tabList
=
ref
([
const
tabList
=
ref
([
{
{
title
:
"基础信息"
,
title
:
"基础信息"
,
...
@@ -200,6 +217,39 @@ const tabList = ref([
...
@@ -200,6 +217,39 @@ const tabList = ref([
const
activeTab
=
ref
(
"基础信息"
);
const
activeTab
=
ref
(
"基础信息"
);
const
tabListSmall
=
ref
([
"企业概况"
,
"企业动态"
]);
const
tabListSmall
=
ref
([
"企业概况"
,
"企业动态"
]);
const
activeTabSmall
=
ref
(
"企业概况"
);
const
activeTabSmall
=
ref
(
"企业概况"
);
const
infoData
=
ref
({})
//基本信息
const
mainPersonnel
=
ref
([])
//主要人员
// 获取企业基本信息
const
handleGetEnterprisePageInfo
=
async
()
=>
{
try
{
const
res
=
await
getEnterprisePageInfo
(
router
.
currentRoute
.
_value
.
params
.
id
);
console
.
log
(
"企业基本信息"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
infoData
.
value
=
res
.
data
}
}
catch
(
error
)
{
console
.
error
(
"获取企业基本信息error"
,
error
);
}
};
const
handleGetEnterpriseKeyPerson
=
async
()
=>
{
try
{
const
res
=
await
getEnterpriseKeyPerson
(
router
.
currentRoute
.
_value
.
params
.
id
);
console
.
log
(
"主要人员"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
mainPersonnel
.
value
=
res
.
data
}
}
catch
(
error
)
{
console
.
error
(
"获取主要人员error"
,
error
);
}
};
onMounted
(
async
()
=>
{
handleGetEnterprisePageInfo
()
handleGetEnterpriseKeyPerson
()
});
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
@@ -258,11 +308,13 @@ const activeTabSmall = ref("企业概况");
...
@@ -258,11 +308,13 @@ const activeTabSmall = ref("企业概况");
align-items
:
flex-start
;
align-items
:
flex-start
;
gap
:
32
;
gap
:
32
;
padding
:
0px
16px
0px
0px
;
padding
:
0px
16px
0px
0px
;
img
{
img
{
width
:
16px
;
width
:
16px
;
height
:
16px
;
height
:
16px
;
margin-right
:
4px
;
margin-right
:
4px
;
}
}
.tab
{
.tab
{
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
rgba
(
59
,
65
,
75
,
1
);
font-family
:
Microsoft
YaHei
;
font-family
:
Microsoft
YaHei
;
...
@@ -517,6 +569,13 @@ const activeTabSmall = ref("企业概况");
...
@@ -517,6 +569,13 @@ const activeTabSmall = ref("企业概况");
line-height
:
24px
;
line-height
:
24px
;
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
justify
;
text-align
:
justify
;
/* overflow: hidden; */
text-overflow
:
ellipsis
;
display
:
-
webkit-box
;
-webkit-line-clamp
:
1
;
overflow
:
hidden
;
-webkit-box-orient
:
vertical
;
width
:
313px
;
}
}
/* 主要人员 */
/* 主要人员 */
...
@@ -606,14 +665,22 @@ const activeTabSmall = ref("企业概况");
...
@@ -606,14 +665,22 @@ const activeTabSmall = ref("企业概况");
}
}
.person-desc
{
.person-desc
{
padding
:
16px
8px
;
//
padding: 16px 8px;
margin
:
0
;
margin
:
16px
8px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
rgba
(
95
,
101
,
108
,
1
);
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
400
;
font-weight
:
400
;
line-height
:
24px
;
line-height
:
24px
;
letter-spacing
:
0px
;
letter-spacing
:
0px
;
text-align
:
left
;
text-align
:
left
;
/* overflow: hidden; */
text-overflow
:
ellipsis
;
display
:
-
webkit-box
;
-webkit-line-clamp
:
2
;
overflow
:
hidden
;
-webkit-box-orient
:
vertical
;
}
}
/* 分支机构 */
/* 分支机构 */
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论