业务系统模块

This commit is contained in:
JenniferW 2025-09-05 16:07:42 +08:00
parent 72232343de
commit 9c33692c69
14 changed files with 47 additions and 50 deletions

BIN
src/assets/22.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

BIN
src/assets/33.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
src/assets/app.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 KiB

BIN
src/assets/arrow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
src/assets/four.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
src/assets/new.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
src/assets/new33.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 769 KiB

After

Width:  |  Height:  |  Size: 330 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 690 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 899 KiB

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 987 KiB

After

Width:  |  Height:  |  Size: 521 KiB

View File

@ -13,14 +13,13 @@
class="scroll-item" class="scroll-item"
v-for="(item, index) in items" v-for="(item, index) in items"
:key="index" :key="index"
:style="itemStyle(item)" :style="itemStyle()"
@click="$emit('item-click', item, index)" @click="$emit('item-click', item, index)"
> >
<!-- 自定义项目内容插槽 --> <!-- 固定图片 -->
<slot name="item" :item="item"> <img src="../assets/app.png" alt="Item image" class="item-image" />
<!-- 默认内容 --> <!-- 默认内容 -->
<span class="default-item-content">{{ item }}</span> <span class="default-item-content">{{ item }}</span>
</slot>
</div> </div>
<!-- 复制一份用于无缝循环 --> <!-- 复制一份用于无缝循环 -->
@ -28,12 +27,12 @@
class="scroll-item" class="scroll-item"
v-for="(item, index) in items" v-for="(item, index) in items"
:key="'copy-' + index" :key="'copy-' + index"
:style="itemStyle(item)" :style="itemStyle()"
@click="$emit('item-click', item, index)" @click="$emit('item-click', item, index)"
> >
<slot name="item" :item="item"> <!-- 固定图片 -->
<img src="../assets/app.png" alt="Item image" class="item-image" />
<span class="default-item-content">{{ item }}</span> <span class="default-item-content">{{ item }}</span>
</slot>
</div> </div>
</div> </div>
</div> </div>
@ -69,18 +68,13 @@ export default {
// //
itemWidth: { itemWidth: {
type: Number, type: Number,
default: 150, default: 100,
}, },
// //
itemHeight: { itemHeight: {
type: Number, type: Number,
default: 100, default: 100,
}, },
//
itemMargin: {
type: Number,
default: 10,
},
}, },
data() { data() {
return { return {
@ -111,13 +105,11 @@ export default {
window.removeEventListener("resize", this.handleResize); window.removeEventListener("resize", this.handleResize);
}, },
methods: { methods: {
// // -
itemStyle(item) { itemStyle() {
return { return {
width: `${this.itemWidth}px`, width: `${this.itemWidth}px`,
height: `${this.itemHeight}px`, height: `${this.itemHeight}px`,
margin: `0 ${this.itemMargin}px`,
background: item.color || "#ccc",
}; };
}, },
@ -187,7 +179,7 @@ export default {
.auto-scroll { .auto-scroll {
position: relative; position: relative;
width: 100%; width: 100%;
max-width: 1200px; max-width: 1300px;
margin: 0 auto; margin: 0 auto;
padding: 0; padding: 0;
box-sizing: border-box; box-sizing: border-box;
@ -205,29 +197,36 @@ export default {
.scroll-item { .scroll-item {
display: inline-block; display: inline-block;
border-radius: 8px; border-radius: 8px;
color: white; color: #eee;
font-weight: bold; font-weight: bold;
text-align: center; text-align: center;
line-height: 100%;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease; transition: transform 0.3s ease;
cursor: pointer; cursor: pointer;
padding: 10px; padding: 10px;
box-sizing: border-box; box-sizing: border-box;
vertical-align: top; /* 确保所有项目对齐 */
&:hover { &:hover {
transform: scale(1.05); transform: scale(1.05);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
} }
.item-image {
width: 80%;
height: auto;
object-fit: cover; /* 保持图片比例并覆盖容器 */
border-radius: 4px;
margin-bottom: 5px;
}
.default-item-content { .default-item-content {
display: flex; display: block;
align-items: center; overflow: hidden;
justify-content: center; text-overflow: ellipsis;
height: 100%; white-space: nowrap;
} }
} }
} }
} }
</style> </style>

View File

@ -2,20 +2,19 @@
<div class="business-system"> <div class="business-system">
<!-- 主标题区域 - 单独放左边 --> <!-- 主标题区域 - 单独放左边 -->
<div class="main-title-section"> <div class="main-title-section">
<i class="el-icon-monitor"></i> <img src="@/assets/22.png" alt="" class="title-image" />
<span>业务系统</span> <span>业务系统</span>
</div> </div>
<!-- 原有内容区域 - 放右边与标题区域左右布局 --> <!-- 原有内容区域 - 放右边与标题区域左右布局 -->
<div class="business-container"> <div class="business-container">
<div class="title-section"> <div class="title-section">
<div class="title-content"> <img src="@/assets/new.png" alt="" class="system-image" />
<div class="system-stats"> <div class="system-stats">
<div class="stat-number">{{ systemCount }}</div> <div class="stat-number">{{ systemCount }}</div>
<div class="stat-label">使用数据的业务系统数</div> <div class="stat-label">使用数据的业务系统数</div>
</div> </div>
</div> </div>
</div>
<!-- 右侧内容区域 --> <!-- 右侧内容区域 -->
<div class="content-section"> <div class="content-section">
@ -84,25 +83,24 @@ export default {
// - // -
.main-title-section { .main-title-section {
flex: 0 0 180px; // flex: 0 0 100px; //
display: flex; display: flex;
flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
padding-right: 20px; padding-right: 20px;
box-sizing: border-box; box-sizing: border-box;
i { .title-image {
font-size: 28px; width: 70%;
color: #4a90e2; margin-bottom: 10px;
margin-right: 10px;
filter: drop-shadow(0 2px 2px rgba(74, 144, 226, 0.3));
} }
span { span {
font-size: 22px; font-size: 24px;
color: #fff; color: #fff;
font-weight: 600; font-weight: 600;
text-align: center;
text-shadow: 0 0 5px rgba(74, 144, 226, 0.5); text-shadow: 0 0 5px rgba(74, 144, 226, 0.5);
} }
} }
@ -117,7 +115,7 @@ export default {
// //
.title-section { .title-section {
flex: 0 0 200px; // flex: 0 0 320px; //
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@ -136,20 +134,20 @@ export default {
box-sizing: border-box; box-sizing: border-box;
} }
//
.title-content {
text-align: center;
}
.system-stats { .system-stats {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; margin-left: 20px;
.stat-number { .stat-number {
font-size: 40px; font-size: 40px;
font-weight: bold; font-weight: bold;
background: linear-gradient(to top, #4a90e2, #fff); font-style: italic;
text-decoration: underline;
text-underline-position: under right;
text-decoration-thickness: 1px;
text-decoration-color: #465e8a;
background: #17f5f8;
-webkit-background-clip: text; -webkit-background-clip: text;
-webkit-text-fill-color: transparent; -webkit-text-fill-color: transparent;
margin-bottom: 10px; margin-bottom: 10px;