财务门户设计
This commit is contained in:
@@ -4,8 +4,8 @@
|
|||||||
<div class="header-left">
|
<div class="header-left">
|
||||||
<div class="card-item">
|
<div class="card-item">
|
||||||
<div class="card-icon">
|
<div class="card-icon">
|
||||||
<Icon icon="icons/erp-shouru.svg" size="48" />
|
<Icon icon="icons/erp-shouru.svg" size="48" />
|
||||||
</div>
|
</div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-value">{{ indexData?.[0]?.index01 || 0 }}</div>
|
<div class="card-value">{{ indexData?.[0]?.index01 || 0 }}</div>
|
||||||
<div class="card-desc">总收入(元)</div>
|
<div class="card-desc">总收入(元)</div>
|
||||||
@@ -13,8 +13,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="card-item">
|
<div class="card-item">
|
||||||
<div class="card-icon">
|
<div class="card-icon">
|
||||||
<Icon icon="icons/erp-zhichu.svg" size="48" />
|
<Icon icon="icons/erp-zhichu.svg" size="48" />
|
||||||
</div>
|
</div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-value">{{ indexData?.[0]?.index02 || 0 }}</div>
|
<div class="card-value">{{ indexData?.[0]?.index02 || 0 }}</div>
|
||||||
<div class="card-desc">总支出(元)</div>
|
<div class="card-desc">总支出(元)</div>
|
||||||
@@ -22,8 +22,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="card-item">
|
<div class="card-item">
|
||||||
<div class="card-icon">
|
<div class="card-icon">
|
||||||
<Icon icon="icons/erp-fencheng.svg" size="48" />
|
<Icon icon="icons/erp-fencheng.svg" size="48" />
|
||||||
</div>
|
</div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-value">{{ indexData?.[0]?.index03 || 0 }}</div>
|
<div class="card-value">{{ indexData?.[0]?.index03 || 0 }}</div>
|
||||||
<div class="card-desc">储蓄率(%)</div>
|
<div class="card-desc">储蓄率(%)</div>
|
||||||
@@ -31,8 +31,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="card-item">
|
<div class="card-item">
|
||||||
<div class="card-icon">
|
<div class="card-icon">
|
||||||
<Icon icon="icons/erp-zongshouru.svg" size="48" />
|
<Icon icon="icons/erp-zongshouru.svg" size="48" />
|
||||||
</div>
|
</div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-value">{{ indexData?.[0]?.index04 || 0 }}</div>
|
<div class="card-value">{{ indexData?.[0]?.index04 || 0 }}</div>
|
||||||
<div class="card-desc">净利润(元)</div>
|
<div class="card-desc">净利润(元)</div>
|
||||||
@@ -40,8 +40,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="card-item">
|
<div class="card-item">
|
||||||
<div class="card-icon">
|
<div class="card-icon">
|
||||||
<Icon icon="icons/erp-jinglirun.svg" size="48" />
|
<Icon icon="icons/erp-jinglirun.svg" size="48" />
|
||||||
</div>
|
</div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-value">{{ indexData?.[0]?.index05 || 0 }}</div>
|
<div class="card-value">{{ indexData?.[0]?.index05 || 0 }}</div>
|
||||||
<div class="card-desc">月均收入(元)</div>
|
<div class="card-desc">月均收入(元)</div>
|
||||||
@@ -49,8 +49,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="card-item">
|
<div class="card-item">
|
||||||
<div class="card-icon">
|
<div class="card-icon">
|
||||||
<Icon icon="icons/erp-jiaoyizhichu.svg" size="48" />
|
<Icon icon="icons/erp-jiaoyizhichu.svg" size="48" />
|
||||||
</div>
|
</div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-value">{{ indexData?.[0]?.index06 || 0 }}</div>
|
<div class="card-value">{{ indexData?.[0]?.index06 || 0 }}</div>
|
||||||
<div class="card-desc">月均支出(元)</div>
|
<div class="card-desc">月均支出(元)</div>
|
||||||
@@ -59,8 +59,8 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="header-right">
|
<div class="header-right">
|
||||||
<div class="header-right-top">
|
<div class="header-right-top">
|
||||||
<h2>财务数据可视化大屏</h2>
|
<h2>财务数据可视化大屏</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="header-right-bottom">
|
<div class="header-right-bottom">
|
||||||
<BasicForm
|
<BasicForm
|
||||||
:labelWidth="100"
|
:labelWidth="100"
|
||||||
@@ -70,6 +70,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="top-section">
|
<div class="top-section">
|
||||||
<div class="top-left">
|
<div class="top-left">
|
||||||
<ChartPie :formParams="FormValues" />
|
<ChartPie :formParams="FormValues" />
|
||||||
@@ -143,7 +144,7 @@ const schemaForm: FormProps = {
|
|||||||
labelWidth: 90,
|
labelWidth: 90,
|
||||||
schemas: [
|
schemas: [
|
||||||
{
|
{
|
||||||
label: '年份',
|
label: '年份',
|
||||||
field: 'reqParam',
|
field: 'reqParam',
|
||||||
defaultValue: new Date().getFullYear().toString(),
|
defaultValue: new Date().getFullYear().toString(),
|
||||||
component: 'Select',
|
component: 'Select',
|
||||||
@@ -163,7 +164,7 @@ const schemaForm: FormProps = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const fetchDataList = async () => {
|
const fetchDataList = async () => {
|
||||||
try {
|
try {
|
||||||
const reqParams = {
|
const reqParams = {
|
||||||
xAxis: getCurrentMonth(),
|
xAxis: getCurrentMonth(),
|
||||||
reqParam: String(currentSystemYear),
|
reqParam: String(currentSystemYear),
|
||||||
@@ -190,24 +191,26 @@ onMounted(() => {
|
|||||||
.erp-green-page-container {
|
.erp-green-page-container {
|
||||||
height: calc(100vh - 100px);
|
height: calc(100vh - 100px);
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0 4px 4px 4px;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
background-color: #e6f7ff;
|
background: #051937;
|
||||||
|
gap: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* 头部区域不变 */
|
||||||
.header-section {
|
.header-section {
|
||||||
height: 10%;
|
height: 10%;
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
padding: 1px;
|
padding: 1px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
border: 1px solid #e5e7eb;
|
background: rgba(12, 44, 85, 0.6);
|
||||||
|
border: 1px solid rgba(32, 160, 255, 0.3);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background-color: #f9fafb;
|
|
||||||
margin: 0 2px 4px 2px;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
box-shadow: inset 0 0 8px rgba(32, 160, 255, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-left {
|
.header-left {
|
||||||
@@ -217,10 +220,10 @@ onMounted(() => {
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
padding: 0 8px;
|
padding: 0 8px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
background-color: #f0f8fb;
|
background: rgba(9, 30, 58, 0.8);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
border: 1px solid #b3d9f2;
|
border: 1px solid rgba(32, 160, 255, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-item {
|
.card-item {
|
||||||
@@ -231,27 +234,37 @@ onMounted(() => {
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 8px;
|
gap: 8px;
|
||||||
background-color: #fff;
|
background: rgba(18, 60, 110, 0.7);
|
||||||
|
border: 1px solid rgba(32, 160, 255, 0.3);
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
||||||
transition: all 0.3s ease;
|
transition: all 0.3s ease;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
min-width: 0;
|
min-width: 0;
|
||||||
|
box-shadow: 0 0 10px rgba(32, 160, 255, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-item:hover {
|
.card-item:hover {
|
||||||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
|
|
||||||
transform: translateY(-2px);
|
transform: translateY(-2px);
|
||||||
border: 1px solid #1890ff;
|
border: 1px solid #20a0ff;
|
||||||
|
box-shadow: 0 0 15px rgba(32, 160, 255, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-icon {
|
.card-icon {
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
width: 60px;
|
width: 50px;
|
||||||
height: 100%;
|
height: 50px;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
background: rgba(32, 160, 255, 0.15);
|
||||||
|
border-radius: 8px;
|
||||||
|
border: 1px solid rgba(32, 160, 255, 0.4);
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.card-icon svg) {
|
||||||
|
color: #40c4ff !important;
|
||||||
|
fill: #40c4ff !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-content {
|
.card-content {
|
||||||
@@ -266,15 +279,17 @@ onMounted(() => {
|
|||||||
.card-value {
|
.card-value {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: #1890ff;
|
color: #40c4ff;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
line-height: 1.2;
|
line-height: 1.2;
|
||||||
|
text-shadow: 0 0 5px rgba(64, 196, 255, 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-desc {
|
.card-desc {
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
color: #666;
|
color: #a0cfff;
|
||||||
margin-top: 2px;
|
margin-top: 2px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -288,11 +303,11 @@ onMounted(() => {
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 6px;
|
gap: 6px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
border: 1px solid #b3d9f2;
|
border: 1px solid rgba(32, 160, 255, 0.3);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
padding: 6px;
|
padding: 6px;
|
||||||
background-color: #f8fcff;
|
background: rgba(9, 30, 58, 0.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-right-top {
|
.header-right-top {
|
||||||
@@ -301,22 +316,20 @@ onMounted(() => {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
background-color: #e6f7ff;
|
background: rgba(18, 60, 110, 0.7);
|
||||||
|
border: 1px solid rgba(32, 160, 255, 0.3);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
padding: 0 10px;
|
padding: 0 10px;
|
||||||
border: 1px solid #91d5ff;
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
|
||||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-right-top h2 {
|
.header-right-top h2 {
|
||||||
font-size: clamp(14px, 1.8vw, 18px);
|
font-size: clamp(14px, 1.8vw, 18px);
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
color: #0958d9;
|
color: #20a0ff;
|
||||||
letter-spacing: 0.5px;
|
letter-spacing: 0.5px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
-webkit-font-smoothing: antialiased;
|
text-shadow: 0 0 8px rgba(32, 160, 255, 0.4);
|
||||||
-moz-osx-font-smoothing: grayscale;
|
|
||||||
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
@@ -329,12 +342,12 @@ onMounted(() => {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
border-radius: 6px;
|
border-radius: 6px;
|
||||||
background-color: #f0f8fb;
|
background: rgba(18, 60, 110, 0.7);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
padding: 8px 12px;
|
padding: 8px 12px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
border: 1px solid #b3d9f2;
|
border: 1px solid rgba(32, 160, 255, 0.3);
|
||||||
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.header-right-bottom .search-form) {
|
:deep(.header-right-bottom .search-form) {
|
||||||
@@ -352,47 +365,58 @@ onMounted(() => {
|
|||||||
:deep(.header-right-bottom .ant-select) {
|
:deep(.header-right-bottom .ant-select) {
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
}
|
}
|
||||||
|
:deep(.ant-select-selector) {
|
||||||
|
background: rgba(9, 30, 58, 0.9) !important;
|
||||||
|
border: 1px solid rgba(32, 160, 255, 0.5) !important;
|
||||||
|
color: #a0cfff !important;
|
||||||
|
}
|
||||||
|
:deep(.ant-select-selection-item) {
|
||||||
|
color: #a0cfff !important;
|
||||||
|
}
|
||||||
|
:deep(.ant-select-arrow) {
|
||||||
|
color: #20a0ff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 以下高度 100% 还原你最初的布局 */
|
||||||
.top-section {
|
.top-section {
|
||||||
height: 30%;
|
height: 30%;
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
padding: 2px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
}
|
||||||
.top-left, .top-middle, .top-right {
|
.top-left, .top-middle, .top-right {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
border: 1px solid #e5e7eb;
|
border: 1px solid rgba(32, 160, 255, 0.3);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background-color: #f9fafb;
|
background: #062044;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
box-shadow: inset 0 0 8px rgba(32, 160, 255, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.middle-section {
|
.middle-section {
|
||||||
height: 30%;
|
height: 30%;
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
padding: 2px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
}
|
||||||
.middle-left {
|
.middle-left {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
border: 1px solid #e5e7eb;
|
border: 1px solid rgba(32, 160, 255, 0.3);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background-color: #f9fafb;
|
background: #062044;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
box-shadow: inset 0 0 8px rgba(32, 160, 255, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.middle-right {
|
.middle-right {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
border: 1px solid #e5e7eb;
|
border: 1px solid rgba(32, 160, 255, 0.3);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background-color: #f9fafb;
|
background: #062044;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
@@ -402,35 +426,36 @@ onMounted(() => {
|
|||||||
.middle-right-1, .middle-right-2 {
|
.middle-right-1, .middle-right-2 {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background-color: #f0f8fb;
|
background: #072955;
|
||||||
|
border: 1px solid rgba(32, 160, 255, 0.2);
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom-section {
|
.bottom-section {
|
||||||
height: 30%;
|
height: 30%;
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
padding: 2px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
}
|
||||||
.bottom-left {
|
.bottom-left {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
border: 1px solid #e5e7eb;
|
border: 1px solid rgba(32, 160, 255, 0.3);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background-color: #f9fafb;
|
background: #062044;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
box-shadow: inset 0 0 8px rgba(32, 160, 255, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom-right {
|
.bottom-right {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
border: 1px solid #e5e7eb;
|
border: 1px solid rgba(32, 160, 255, 0.3);
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background-color: #f9fafb;
|
background: #062044;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
gap: 4px;
|
gap: 4px;
|
||||||
@@ -440,12 +465,14 @@ onMounted(() => {
|
|||||||
.bottom-right-1, .bottom-right-2 {
|
.bottom-right-1, .bottom-right-2 {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
background-color: #f0f8fb;
|
background: #072955;
|
||||||
|
border: 1px solid rgba(32, 160, 255, 0.2);
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.top-middle) {
|
:deep(.top-middle) {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
Reference in New Issue
Block a user