企业知识库

This commit is contained in:
cwchen 2025-10-21 09:33:56 +08:00
parent c74a8b54f8
commit f264bc7fbf
5 changed files with 335 additions and 8 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

View File

@ -263,6 +263,20 @@ export const dynamicRoutes = [
meta: { title: '主体信息详情', activeMenu: '/enterpriseLibrary/enterprise', noCache: true } meta: { title: '主体信息详情', activeMenu: '/enterpriseLibrary/enterprise', noCache: true }
} }
] ]
},
{
path: '/EnterpriseKnowledge',
component: Layout,
hidden: true,
permissions: ['enterpriseLibrary:enterprise:EnterpriseKnowledge'],
children: [
{
path: 'index',
component: () => import('@/views/enterpriseLibrary/enterprise/components/EnterpriseKnowledge'),
name: 'EnterpriseKnowledge',
meta: { title: '企业知识库', activeMenu: '/enterpriseLibrary/enterprise', noCache: true }
}
]
} }

View File

@ -0,0 +1,306 @@
<template>
<div class="app-container">
<!-- 返回按钮 -->
<div class="back-container">
<el-button type="default" size="small" @click="handleBack" class="back-btn">
返回
</el-button>
</div>
<!-- 知识库卡片网格 -->
<div class="knowledge-grid">
<!-- 业绩库 -->
<div class="knowledge-card" @click="handleCardClick('performance')">
<div class="card-icon">
<img :src="enterpriseKnowledgeIcon" alt="业绩库" />
</div>
<div class="card-content">
<h3 class="card-title">业绩库</h3>
<p class="card-description">业绩库主要管理企业的项目业绩信息, 包括合同验收报告中标通知书等</p>
</div>
</div>
<!-- 人员库 -->
<div class="knowledge-card" @click="handleCardClick('personnel')">
<div class="card-icon">
<img :src="enterpriseKnowledgeIcon" alt="人员库" />
</div>
<div class="card-content">
<h3 class="card-title">人员库</h3>
<p class="card-description">人员库主要管理企业的人员资质信息, 包括岗位工作经验员工证书等</p>
</div>
</div>
<!-- 资质库 -->
<div class="knowledge-card" @click="handleCardClick('qualification')">
<div class="card-icon">
<img :src="enterpriseKnowledgeIcon" alt="资质库" />
</div>
<div class="card-content">
<h3 class="card-title">资质库</h3>
<p class="card-description">资质库主要管理企业的资质证书信息, 包括软著专利荣誉等</p>
</div>
</div>
<!-- 技术方案库 -->
<div class="knowledge-card" @click="handleCardClick('technical')">
<div class="card-icon">
<img :src="enterpriseKnowledgeIcon" alt="技术方案库" />
</div>
<div class="card-content">
<h3 class="card-title">技术方案库</h3>
<p class="card-description">解决方案库主要用于管理企业内部技术方案产品方案项目方案等</p>
</div>
</div>
<!-- 工器具库 -->
<div class="knowledge-card" @click="handleCardClick('tools')">
<div class="card-icon">
<img :src="enterpriseKnowledgeIcon" alt="工器具库" />
</div>
<div class="card-content">
<h3 class="card-title">工器具库</h3>
<p class="card-description">工器具库主要用于登记工器具资料信息, 统一管理工器具清单等</p>
</div>
</div>
<!-- 财务库 -->
<div class="knowledge-card" @click="handleCardClick('financial')">
<div class="card-icon">
<img :src="enterpriseKnowledgeIcon" alt="财务库" />
</div>
<div class="card-content">
<h3 class="card-title">财务库</h3>
<p class="card-description">财务库主要管理企业的财务报告文档, 包括审计报告年报等</p>
</div>
</div>
</div>
</div>
</template>
<script>
import enterpriseKnowledgeIcon from '@/assets/enterpriseLibrary/enterpriseKnowledgeIcon.png';
export default {
name: 'EnterpriseKnowledge',
data() {
return {
enterpriseId: this.$route.query.id,
enterpriseKnowledgeIcon
}
},
methods: {
//
handleBack() {
this.$router.go(-1)
},
//
handleCardClick(type) {
console.log('点击了知识库类型:', type)
//
this.$message.info(`点击了${this.getCardTitle(type)}`)
},
//
getCardTitle(type) {
const titles = {
'performance': '业绩库',
'personnel': '人员库',
'qualification': '资质库',
'technical': '技术方案库',
'tools': '工器具库',
'financial': '财务库'
}
return titles[type] || '未知'
}
}
}
</script>
<style scoped lang="scss">
.app-container {
padding: 20px;
background: linear-gradient(180deg, #F1F6FF 20%, #E5EFFF 100%);
min-height: 100vh;
}
.back-container {
display: flex;
justify-content: flex-end;
align-items: center;
margin-bottom: 30px;
padding: 0 20px;
.back-btn {
width: 98px;
height: 36px;
background: #FFFFFF;
box-shadow: 0px 4px 8px 0px rgba(76, 76, 76, 0.2);
border-radius: 4px;
border: none;
color: #666;
font-size: 14px;
transition: all 0.3s ease;
&:hover {
background: #f5f5f5;
color: #409EFF;
box-shadow: 0px 6px 12px 0px rgba(76, 76, 76, 0.3);
}
}
}
.knowledge-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
max-width: 100%;
margin: 0;
padding: 0 10px;
}
.knowledge-card {
background: #fff;
border: 1px solid #e8e8e8;
border-radius: 8px;
padding: 20px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
transition: all 0.3s ease;
cursor: pointer;
display: flex;
flex-direction: row;
align-items: center;
text-align: left;
min-height: 120px;
&:hover {
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
transform: translateY(-2px);
border-color: #409EFF;
}
.card-icon {
background: transparent;
display: flex;
align-items: center;
justify-content: center;
margin-right: 16px;
flex-shrink: 0;
img {
width: auto;
height: auto;
max-width: 100%;
max-height: 100%;
object-fit: contain;
}
}
.card-content {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
.card-title {
font-size: 18px;
font-weight: 600;
color: #333;
margin: 0 0 8px 0;
line-height: 1.4;
}
.card-description {
font-size: 14px;
color: #666;
line-height: 1.6;
margin: 0;
}
}
}
//
@media (max-width: 1400px) {
.knowledge-grid {
grid-template-columns: repeat(3, 1fr);
gap: 14px;
}
}
@media (max-width: 1000px) {
.knowledge-grid {
grid-template-columns: repeat(2, 1fr);
gap: 12px;
}
}
@media (max-width: 768px) {
.app-container {
padding: 15px;
}
.back-container {
margin-bottom: 20px;
}
.knowledge-grid {
grid-template-columns: 1fr;
gap: 12px;
padding: 0 5px;
}
.knowledge-card {
padding: 16px;
min-height: 100px;
.card-icon {
margin-right: 12px;
img {
width: auto;
height: auto;
max-width: 100%;
max-height: 100%;
}
}
.card-content {
.card-title {
font-size: 16px;
margin-bottom: 10px;
}
.card-description {
font-size: 13px;
}
}
}
}
@media (max-width: 480px) {
.knowledge-card {
padding: 16px;
min-height: 160px;
.card-icon {
img {
width: auto;
height: auto;
max-width: 100%;
max-height: 100%;
}
}
.card-content {
.card-title {
font-size: 15px;
}
.card-description {
font-size: 12px;
}
}
}
}
</style>

View File

@ -75,13 +75,10 @@ export default {
residence: '', residence: '',
businessScope: '', businessScope: '',
fileList: [], fileList: [],
showPhoto: false
} }
}, },
methods: { methods: {
openPhoto() {
this.showPhoto = true
}
}, },
} }
</script> </script>

View File

@ -85,7 +85,7 @@
<!-- 操作按钮 --> <!-- 操作按钮 -->
<div class="enterprise-actions"> <div class="enterprise-actions">
<div> <div @click="handleEnterpriseKnowledge(enterprise)">
<img :src="EnterpriseKnowledge" alt="企业知识库" /> <img :src="EnterpriseKnowledge" alt="企业知识库" />
<span>企业知识库</span> <span>企业知识库</span>
</div> </div>
@ -256,6 +256,17 @@ export default {
} }
}) })
}, },
//
handleEnterpriseKnowledge(enterprise){
this.$router.push({
name: 'EnterpriseKnowledge',
query: {
type: encryptWithSM4('knowledge'),
id: encryptWithSM4(enterprise.id ?? '0'),
}
})
},
// //
handleDetail(enterprise){ handleDetail(enterprise){
this.$router.push({ this.$router.push({
@ -265,7 +276,6 @@ export default {
id: encryptWithSM4(enterprise.id ?? '0'), id: encryptWithSM4(enterprise.id ?? '0'),
} }
}) })
}, },
// //