diff --git a/src/assets/images/UrbanElements/bg1.png b/src/assets/images/UrbanElements/bg1.png
new file mode 100644
index 0000000000000000000000000000000000000000..3cd7bbcdf4a606e82df4ad8655899e4eb77b9309
Binary files /dev/null and b/src/assets/images/UrbanElements/bg1.png differ
diff --git a/src/assets/images/UrbanElements/gridBg.png b/src/assets/images/UrbanElements/gridBg.png
new file mode 100644
index 0000000000000000000000000000000000000000..8641d67ba63ecab4654cf17cf1f508e744df02eb
Binary files /dev/null and b/src/assets/images/UrbanElements/gridBg.png differ
diff --git a/src/pages/Common/components/BaseCard/index.tsx b/src/pages/Common/components/BaseCard/index.tsx
index ce64ab68197db7d40fa68fe1eda38410bda318b4..7d29998bdd1b37f6719d835ffa32378b506e2f2b 100644
--- a/src/pages/Common/components/BaseCard/index.tsx
+++ b/src/pages/Common/components/BaseCard/index.tsx
@@ -7,7 +7,7 @@ import styles from './index.less'
*/
interface BaseCardProps {
- title?: string;
+ title?: string | ReactNode;
width?: React.CSSProperties['width'];
style?: React.CSSProperties;
extra?: ReactNode,
diff --git a/src/pages/UrbanManagementResourceElements/DataElement/LineCharts/index.tsx b/src/pages/UrbanManagementResourceElements/DataElement/LineCharts/index.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..aebf6825cef5f61b8c4518fc6f4eaa95f67acca9
--- /dev/null
+++ b/src/pages/UrbanManagementResourceElements/DataElement/LineCharts/index.tsx
@@ -0,0 +1,76 @@
+import { useMemo } from 'react'
+import ReactEcharts from 'echarts-for-react';
+const LineCharts = ({ data }: { data: any[] }) => {
+
+ const option = useMemo(() => {
+ const chartData: any = ['100', '90', '80','100', '90', '80','100', '90', '80','100', '90', '80','100', '90', '80','100', '90', '80',]
+ const showXAis = true
+ return {
+ xAxis: {
+ type: 'category',
+ boundaryGap: false,
+ show: showXAis,
+ data: showXAis ? data?.map(item => item.name) : [],
+ axisLabel: {
+ color: '#CBEDFF',
+ interval: 3 // 设置为0以显示所有坐标点
+ },
+ axisLine: {
+ show: false,
+ },
+ },
+ yAxis: {
+ type: 'value',
+ show: false,
+ },
+ grid: {
+ left: '0', // 左边距
+ right: '0%', // 右边距
+ top: '10%', // 上边距
+ bottom: '30%' // 下边距
+ },
+ series: [
+ {
+ data: chartData,
+ symbol: "none",
+ type: 'line',
+ lineStyle: {
+ color: "#57EFE5",
+ },
+
+ areaStyle: {
+ // 区域填充样式。设置后显示成区域面积图。
+ color: {
+ type: 'linear',
+ x: 0,
+ y: 1,
+ x2: 0,
+ y2: 0.2,
+ colorStops: [
+ {
+ offset: 0,
+ color: 'rgba(87, 239, 229, 0)', // 0% 处的颜色
+ },
+
+ {
+ offset: 1,
+ color: 'rgba(87, 239, 229, 0.36)', // 100% 处的颜色
+ },
+ ],
+ global: false, // 缺省为 false
+ },
+ },
+ },
+ ],
+ }
+ }, [data])
+
+ return (
+
+ )
+}
+
+export default LineCharts
\ No newline at end of file
diff --git a/src/pages/UrbanManagementResourceElements/DataElement/index.less b/src/pages/UrbanManagementResourceElements/DataElement/index.less
new file mode 100644
index 0000000000000000000000000000000000000000..9b138160709652586185546964fea522a0c5dae2
--- /dev/null
+++ b/src/pages/UrbanManagementResourceElements/DataElement/index.less
@@ -0,0 +1,145 @@
+.wrap {
+ width: 50%;
+ border-radius: 40px;
+ background: linear-gradient(
+ 180deg,
+ rgba(27, 50, 89, 0.3),
+ rgba(27, 50, 89, 0.3) 100%
+ );
+ padding: 36px;
+ .top {
+ margin-bottom: 57px;
+ .title {
+ font-family: DingTalk JinBuTi;
+ font-size: 40px;
+ color: #fff;
+ }
+ }
+ .main {
+ flex: 1;
+ .totalSection {
+ font-family: DingTalk JinBuTi;
+ padding: 0 30px;
+ .name {
+ font-size: 30px;
+ font-weight: 400;
+ color: #e4edff;
+ }
+ .totalNum {
+ :global {
+ .ant-statistic-content-value {
+ background: linear-gradient(
+ 180deg,
+ rgb(170, 255, 246),
+ rgb(37, 187, 255)
+ );
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+ font-weight: 700;
+ line-height: normal;
+ font-size: 70px;
+ font-family: DingTalk JinBuTi;
+ }
+ }
+ }
+ .unit {
+ font-family: DingTalk JinBuTi;
+ font-size: 30px;
+ font-weight: 400;
+ color: #e4edff;
+ }
+
+ .todayName {
+ font-family: DingTalk JinBuTi;
+ font-size: 18px;
+ font-weight: 400;
+ color: #fff;
+ }
+
+ .todayunit {
+ font-family: DingTalk JinBuTi;
+ font-size: 18px;
+ font-weight: 400;
+ color: #fff;
+ }
+
+ .todayNum {
+ :global {
+ .ant-statistic-content-value {
+ color: #09c35c;
+ font-size: 20px;
+ font-family: DingTalk JinBuTi;
+ vertical-align: 5px;
+ }
+ }
+ }
+ }
+
+ .chartSection {
+ padding: 0 10px;
+ .title {
+ font-size: 20px;
+ font-weight: 400;
+ color: #E4EDFF;
+ }
+ }
+
+ .cardSection {
+ padding: 0 10px;
+ :global {
+ .ant-statistic-content-value {
+ background: linear-gradient(
+ 180deg,
+ rgb(170, 255, 246),
+ rgb(37, 187, 255)
+ );
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+ font-weight: 700;
+ line-height: normal;
+ font-size: 50px;
+ font-family: D-DIN;
+ }
+ }
+ .left {
+ width: 333px;
+ height: 169px;
+ border-radius: 48px;
+ background: rgba(58, 126, 188, 0.2);
+ text-align: center;
+ padding-top: 40px;
+ .unit {
+ font-size: 20px;
+ font-weight: 400;
+ color: #bccee9;
+ line-height: normal;
+ }
+ .name {
+ font-size: 18px;
+ font-weight: 700;
+ color: #bccee9;
+ }
+ }
+ .right {
+ flex: 1;
+ .card {
+ height: 77px;
+ background: rgba(58, 126, 188, 0.2);
+ padding: 0 20px;
+ .name {
+ font-size: 18px;
+ font-weight: 700;
+ color: #bccee9;
+ }
+ .unit {
+ font-size: 20px;
+ font-weight: 400;
+ color: #bccee9;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/pages/UrbanManagementResourceElements/DataElement/index.tsx b/src/pages/UrbanManagementResourceElements/DataElement/index.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..54ed1a5910b4b21da8c3d295a5ab5c300f4164ee
--- /dev/null
+++ b/src/pages/UrbanManagementResourceElements/DataElement/index.tsx
@@ -0,0 +1,97 @@
+import { Flex, Statistic, Space, Row, Col } from 'antd'
+import type { StatisticProps } from 'antd';
+import CountUp from 'react-countup';
+import styles from './index.less'
+import LineCharts from './LineCharts';
+
+/**
+ *
+ * @description 数据要素
+ */
+
+const formatter: StatisticProps['formatter'] = (value) => (
+
+);
+
+const noSeparatorformatter: StatisticProps['formatter'] = (value) => (
+
+);
+
+
+const DataElement = () => {
+ return (
+
+
+ 数据要素
+
+
+
+ 已汇集数据
+
+
+ 万条
+
+
+ 今日新增
+
+ 条
+
+
+
+ 近一月汇聚趋势
+
+
+
+
+
+
+ 个
+
+ 数据活跃度
+
+
+
+
+
+ 基础信息库
+
+
+ 个
+
+
+
+
+
+ 业务库
+
+
+ 个
+
+
+
+
+
+ 主题库
+
+
+ 个
+
+
+
+
+
+ 专题库
+
+
+ 个
+
+
+
+
+
+
+
+ )
+}
+
+export default DataElement
\ No newline at end of file
diff --git a/src/pages/UrbanManagementResourceElements/ManagementElement/index.less b/src/pages/UrbanManagementResourceElements/ManagementElement/index.less
new file mode 100644
index 0000000000000000000000000000000000000000..3f9b279bf4c968fe546836e94ff2bd4450aef1aa
--- /dev/null
+++ b/src/pages/UrbanManagementResourceElements/ManagementElement/index.less
@@ -0,0 +1,116 @@
+.wrap {
+ width: 50%;
+ border-radius: 40px;
+ background: linear-gradient(
+ 180deg,
+ rgba(27, 50, 89, 0.3),
+ rgba(27, 50, 89, 0.3) 100%
+ );
+ padding: 20px 30px 30px;
+ .top {
+ margin-bottom: 57px;
+ .title {
+ font-family: DingTalk JinBuTi;
+ font-size: 40px;
+ color: #fff;
+ }
+ .right {
+ font-size: 20px;
+ color: #bccee9;
+ cursor: pointer;
+ }
+ }
+ .main {
+ flex: 1;
+ border-radius: 20px;
+ background: linear-gradient(
+ 180deg,
+ rgba(58, 126, 188, 0.01),
+ rgba(58, 126, 188, 0.1) 100%
+ );
+ padding: 0 100px 50px 100px;
+
+ .card {
+ width: 228px;
+ height: 127px;
+ border-radius: 20px;
+ background: linear-gradient(
+ 180deg,
+ rgba(58, 126, 188, 0),
+ rgba(58, 126, 188, 0.43) 100%
+ );
+ text-align: center;
+ padding-top: 20px;
+ .unit {
+ font-size: 20px;
+ font-weight: 400;
+ color: #bccee9;
+ line-height: normal;
+ }
+ .name {
+ font-size: 18px;
+ font-weight: 700;
+ color: #bccee9;
+ }
+ }
+ }
+
+ .gridSection {
+ .gridItem {
+ width: 180px;
+ height: 117px;
+ text-align: center;
+ background-image: url('@/assets/images/UrbanElements/gridBg.png');
+ background-repeat: no-repeat;
+ background-size: 100%;
+ .unit {
+ font-size: 20px;
+ font-weight: 400;
+ color: #bccee9;
+ line-height: normal;
+ }
+ .name {
+ font-size: 18px;
+ font-weight: 700;
+ color: #fff;
+ }
+ }
+ }
+
+ .bottom {
+ width: 818px;
+ height: 110px;
+ background-image: url('@/assets/images/UrbanElements/bg1.png');
+ background-repeat: no-repeat;
+ background-size: 100%;
+ background-position: bottom;
+ .unit {
+ font-size: 20px;
+ font-weight: 400;
+ color: #bccee9;
+ line-height: normal;
+ }
+ .name {
+ font-size: 18px;
+ font-weight: 700;
+ color: #bccee9;
+ }
+ }
+
+ :global {
+ .ant-statistic-content-value {
+ background: linear-gradient(
+ 180deg,
+ rgb(170, 255, 246),
+ rgb(37, 187, 255)
+ );
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+ font-family: D-DIN;
+ font-size: 50px;
+ font-weight: 700;
+ line-height: normal;
+ }
+ }
+}
diff --git a/src/pages/UrbanManagementResourceElements/ManagementElement/index.tsx b/src/pages/UrbanManagementResourceElements/ManagementElement/index.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..3865becb898d332bd0527306cb80f5b239e6e805
--- /dev/null
+++ b/src/pages/UrbanManagementResourceElements/ManagementElement/index.tsx
@@ -0,0 +1,77 @@
+
+import { Flex, Statistic, Space } from 'antd'
+import type { StatisticProps } from 'antd';
+import CountUp from 'react-countup';
+import styles from './index.less'
+
+/**
+ *
+ * @description 管理要素
+ */
+
+const formatter: StatisticProps['formatter'] = (value) => (
+
+);
+
+const ManagementElement = () => {
+ return (
+
+
+ 管理要素
+ 进入网格基座查看更多
+
+
+
+
+
+
+ 万个
+
+ 部件
+
+
+
+
+ 万个
+
+ 资源
+
+
+
+
+
+
+ 个
+
+ 网格单元
+
+
+
+
+ 个
+
+ 责任网格
+
+
+
+
+ 个
+
+ 资源网格
+
+
+
+
+
+
+ 平方米
+
+ 管辖范围
+
+
+
+
+ )
+}
+
+export default ManagementElement
\ No newline at end of file
diff --git a/src/pages/UrbanManagementResourceElements/index.less b/src/pages/UrbanManagementResourceElements/index.less
index b96aa13fcb14f626754c6c3f54d471b821601bf9..85b6578490c0f32a2b6e99d186b877c9a5f95fc7 100644
--- a/src/pages/UrbanManagementResourceElements/index.less
+++ b/src/pages/UrbanManagementResourceElements/index.less
@@ -1,3 +1,22 @@
.container {
+ width: 100%;
height: 100%;
+ .top {
+ padding: 20px 76px 0 54px;
+ margin-bottom: 20px;
+ .title {
+ font-family: DingTalk JinBuTi;
+ font-size: 40px;
+ color: #fff;
+ }
+ .right {
+ font-size: 20px;
+ color: #BCCEE9;
+ cursor: pointer;
+ }
+ }
+ .main {
+ flex: 1;
+ padding: 0 25px 25px;
+ }
}
diff --git a/src/pages/UrbanManagementResourceElements/index.tsx b/src/pages/UrbanManagementResourceElements/index.tsx
index 2f6b349e061fd7182f205dbb2963f47e1a6f08bf..307f216cd3b14bfd3e6b543575242b41b69e1962 100644
--- a/src/pages/UrbanManagementResourceElements/index.tsx
+++ b/src/pages/UrbanManagementResourceElements/index.tsx
@@ -1,11 +1,21 @@
import { Flex } from 'antd';
import React from 'react';
+import ManagementElement from './ManagementElement';
+import DataElement from './DataElement';
+
import styles from './index.less';
/** @module 城管资源要素 */
const UrbanManagementResourceElements: React.FC = () => {
return (
-
-
+
+
+ 城管资源要素
+ 任意网格态势
+
+
+
+
+
);
};