+
+
@@ -132,6 +111,7 @@
import NewNav from '@/pages/index/components/new-nav/index.vue';
import Footer from '@/pages/index/components/footer/index.vue';
import BreadcrumbNav from '@/pages/index/components/breadcrumb/index.vue';
+import gxzxApi from '@/pages/index/api/gxzx/index.js';
export default {
name: 'SjlbcPage',
@@ -150,85 +130,76 @@ export default {
},
sortField: '',
sortOrder: '',
- dataList: [
- {
- name: '全球多源高分辨温室气体及大气污染物排放清单',
- type: '社会性数据',
- publishTime: '2026-03-30 10:00',
- updateTime: '2026-03-30 10:00',
- dataCount: '45,000',
- views: '475',
- downloads: '18',
- },
- {
- name: '国家温室气体排放因子数据库',
- type: '公共数据',
- publishTime: '2026-03-30 10:00',
- updateTime: '',
- dataCount: '45,000',
- views: '475',
- downloads: '18',
- },
- {
- name: '碳排放数据库',
- type: '公共数据',
- publishTime: '2026-03-30 10:00',
- updateTime: '',
- dataCount: '45,000',
- views: '475',
- downloads: '18',
- },
- {
- name: '全球多源高分辨温室气体及大气污染物排放清单',
- type: '社会性数据',
- publishTime: '2026-03-30 10:00',
- updateTime: '2026-03-30 10:00',
- dataCount: '45,000',
- views: '475',
- downloads: '18',
- },
- {
- name: '国家温室气体排放因子数据库',
- type: '公共数据',
- publishTime: '2026-03-30 10:00',
- updateTime: '',
- dataCount: '45,000',
- views: '475',
- downloads: '18',
- },
- {
- name: '碳排放数据库',
- type: '公共数据',
- publishTime: '2026-03-30 10:00',
- updateTime: '',
- dataCount: '45,000',
- views: '475',
- downloads: '18',
- },
- {
- name: '全球多源高分辨温室气体及大气污染物排放清单',
- type: '社会性数据',
- publishTime: '2026-03-30 10:00',
- updateTime: '2026-03-30 10:00',
- dataCount: '45,000',
- views: '475',
- downloads: '18',
- },
- {
- name: '国家温室气体排放因子数据库',
- type: '公共数据',
- publishTime: '2026-03-30 10:00',
- updateTime: '',
- dataCount: '45,000',
- views: '475',
- downloads: '18',
- },
- ],
+ dataList: [],
+ pagination: {
+ pageNo: 1,
+ pageSize: 10,
+ total: 0
+ },
+ sjscUuid: '',
// 移动端筛选折叠状态
filterCollapsed: true,
+ // 联系方式弹窗
+ contactDialogVisible: false,
+ currentContact: null,
+ // 表格列配置
+ tableColumns: [
+ {
+ width: '120px',
+ colKey: 'td-type',
+ title: '数据类型',
+ },
+ {
+ colKey: 'td-name',
+ title: '名称',
+ },
+ {
+ colKey: 'td-desc',
+ title: '描述',
+ ellipsis: true,
+ tooltip: { theme: 'light', attachTo: () => document.querySelector('.td-desc-cell') },
+ },
+ {
+ width: '180px',
+ colKey: 'td-time',
+ title: '更新时间',
+ },
+ {
+ width: '120px',
+ colKey: 'td-count',
+ title: '数据条数',
+ },
+ {
+ width: '120px',
+ colKey: 'td-downloads',
+ title: '联系方式',
+ },
+ ],
+ paginationConfig: {
+ current: 1,
+ pageSize: 10,
+ total: 0,
+ showJumper: true,
+ },
};
},
+ mounted() {
+ this.sjscUuid = this.$route.query.id || '';
+ this.loadData();
+ },
computed: {
+ totalPages() {
+ return Math.ceil(this.pagination.total / this.pagination.pageSize) || 1;
+ },
+ visiblePages() {
+ const total = this.totalPages;
+ const current = this.pagination.pageNo;
+ const pages = [];
+ for (let i = Math.max(1, current - 2); i <= Math.min(total, current + 2); i++) {
+ pages.push(i);
+ }
+ return pages;
+ },
sortedDataList() {
if (!this.sortField) {
return this.dataList;
@@ -260,6 +231,38 @@ export default {
},
},
methods: {
+ loadData() {
+ const params = {
+ pageNo: this.pagination.pageNo,
+ pageSize: this.pagination.pageSize,
+ sjscUuid: this.sjscUuid,
+ priceMin: this.filterParams.priceMin ? parseFloat(this.filterParams.priceMin) : null,
+ priceMax: this.filterParams.priceMax ? parseFloat(this.filterParams.priceMax) : null,
+ validDate: this.filterParams.validDate || null
+ };
+ gxzxApi.sjlbbList(params).then(res => {
+ if (res && res.data && res.data.records) {
+ this.dataList = res.data.records.map(item => ({
+ uuid: item.uuid,
+ name: item.sjmc,
+ type: item.sjlxDm,
+ sjbt: item.sjbt,
+ sjms: item.sjms,
+ publishTime: item.lrrq ? this.formatDate(item.lrrq) : '',
+ updateTime: item.xgrq ? this.formatDate(item.xgrq) : '',
+ dataCount: item.sjsl ? item.sjsl.toLocaleString() : '0',
+ views: item.llcs || 0,
+ downloads: item.xzcs || 0,
+ jg: item.jg,
+ jgDw: item.jgDw
+ }));
+ this.pagination.total = res.data.total;
+ this.paginationConfig.total = res.data.total;
+ this.paginationConfig.current = this.pagination.pageNo;
+ this.paginationConfig.pageSize = this.pagination.pageSize;
+ }
+ });
+ },
sortBy(field) {
if (this.sortField === field) {
this.sortOrder = this.sortOrder === 'asc' ? 'desc' : 'asc';
@@ -268,6 +271,28 @@ export default {
this.sortOrder = 'desc';
}
},
+ formatDate(dateStr) {
+ if (!dateStr) return '';
+ const d = new Date(dateStr);
+ const year = d.getFullYear();
+ const month = String(d.getMonth() + 1).padStart(2, '0');
+ const day = String(d.getDate()).padStart(2, '0');
+ return `${year}-${month}-${day}`;
+ },
+ showContactDialog(item) {
+ gxzxApi.getSjlbb({ uuid: item.uuid }).then(res => {
+ if (res && res.data) {
+ this.currentContact = {
+ lxr: res.data.lxr,
+ lxdh: res.data.lxdh,
+ lxyx: res.data.lxyx,
+ };
+ } else {
+ this.currentContact = null;
+ }
+ this.contactDialogVisible = true;
+ });
+ },
resetFilter() {
this.filterParams = {
priceMin: '',
@@ -276,7 +301,13 @@ export default {
};
},
confirmFilter() {
- // 筛选功能实现
+ this.pagination.pageNo = 1;
+ this.loadData();
+ },
+ handlePageChange(pageInfo) {
+ this.pagination.pageNo = pageInfo.current;
+ this.pagination.pageSize = pageInfo.pageSize;
+ this.loadData();
},
},
};
@@ -458,136 +489,37 @@ export default {
flex: 1;
}
-// 表头
-.table-header {
- display: flex;
- height: 48px;
- background: #f5f5f5;
- border-bottom: 1px solid #eee;
+// 联系方式弹窗样式
+.contact-dialog-content {
+ padding: 16px 0;
}
-.th {
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 4px;
- padding: 0 12px;
- font-size: 14px;
- font-weight: 600;
- color: #333;
- cursor: pointer;
-
- &:hover {
- background: #eee;
- }
-}
-
-.th-type {
- width: 120px;
-}
-
-.th-name {
- flex: 1;
- justify-content: flex-start;
-}
-
-.th-time {
- width: 180px;
-}
-
-.th-count {
- width: 100px;
-}
-
-.th-views {
- width: 100px;
-}
-
-.th-downloads {
- width: 100px;
-}
-
-.sort-icon {
+.contact-info {
display: flex;
flex-direction: column;
- gap: 1px;
- font-size: 8px;
- color: #ccc;
-
- .sort-up,
- .sort-down {
- &.active {
- color: #009a29;
- }
- }
-
- .sort-down {
- transform: rotate(180deg);
- }
+ gap: 16px;
}
-// 表格数据
-.table-body {
- .table-row {
- display: flex;
- min-height: 72px;
- border-bottom: 1px solid #eee;
-
- &:hover {
- background: #f9f9f9;
- }
-
- &.row-even {
- background: #fafafa;
- }
- }
-}
-
-.td {
+.contact-item {
display: flex;
align-items: center;
- justify-content: center;
- padding: 0 12px;
- font-size: 14px;
- color: #666;
-}
-.td-type {
- width: 120px;
-}
+ .contact-label {
+ width: 80px;
+ color: #666;
+ font-size: 14px;
+ }
-.td-name {
- flex: 1;
- justify-content: flex-start;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-.td-time {
- width: 180px;
- flex-direction: column;
- justify-content: center;
- gap: 4px;
-
- .time-info {
- display: flex;
- flex-direction: column;
- font-size: 12px;
- color: #999;
+ .contact-value {
+ color: #333;
+ font-size: 14px;
}
}
-.td-count {
- width: 100px;
-}
-
-.td-views {
- width: 100px;
-}
-
-.td-downloads {
- width: 100px;
+.contact-empty {
+ text-align: center;
+ color: #999;
+ padding: 20px 0;
}
// 数据类型标签
@@ -607,39 +539,6 @@ export default {
}
}
-// 分页
-.pagination {
- display: flex;
- justify-content: center;
- align-items: center;
- padding: 24px 0;
- gap: 8px;
-
- .page-btn {
- height: 36px;
- min-width: 40px;
- padding: 0 12px;
- line-height: 36px;
- color: #666;
- text-align: center;
- cursor: pointer;
- background: #fff;
- border: 1px solid #ddd;
- border-radius: 4px;
-
- &:hover {
- color: #009a29;
- border-color: #009a29;
- }
-
- &.active {
- color: #fff;
- background: #009a29;
- border-color: #009a29;
- }
- }
-}
-
@media (max-width: 768px) {
.content-wrapper {
flex-direction: column;
@@ -677,58 +576,5 @@ export default {
.data-list {
overflow-x: auto;
}
-
- .table-header {
- min-width: 800px;
- }
-
- .table-body {
- min-width: 800px;
- }
-
- .pagination {
- padding: 16px 0;
- flex-wrap: wrap;
- }
-}
-
-@media (max-width: 480px) {
- .content-wrapper {
- padding: 8px;
- gap: 8px;
- }
-
- .filter-box {
- padding: 8px;
- }
-
- .filter-title {
- margin-bottom: 8px;
- font-size: 13px;
- }
-
- .filter-buttons .btn-reset,
- .filter-buttons .btn-confirm {
- height: 32px;
- font-size: 13px;
- }
-
- .table-header {
- min-width: 700px;
- }
-
- .table-body {
- min-width: 700px;
- }
-
- .th {
- padding: 0 8px;
- font-size: 12px;
- }
-
- .td {
- padding: 0 8px;
- font-size: 12px;
- }
}
diff --git a/txw-mhzc-web/src/pages/index/views/fwsc/sjsc.vue b/txw-mhzc-web/src/pages/index/views/fwsc/sjsc.vue
index b6b1068..7eebac3 100644
--- a/txw-mhzc-web/src/pages/index/views/fwsc/sjsc.vue
+++ b/txw-mhzc-web/src/pages/index/views/fwsc/sjsc.vue
@@ -88,6 +88,7 @@
import NewNav from '@/pages/index/components/new-nav/index.vue';
import Footer from '@/pages/index/components/footer/index.vue';
import BreadcrumbNav from '@/pages/index/components/breadcrumb/index.vue';
+import gxzxApi from '@/pages/index/api/gxzx/index.js';
export default {
name: 'SjscPage',
@@ -111,50 +112,12 @@ export default {
{ label: '因子库', value: 'factor' },
{ label: '社会性数据', value: 'social' }
],
- cardList: [
- {
- id: 2,
- name: 'HiQLCD数据库',
- description: '覆盖生命周期碳足迹评估所需的基础数据,支持多种排放因子查询与自定义导入。',
- tags: ['商业数据'],
- price: '付费'
- },
- {
- id: 3,
- name: '天工数据库',
- description: '整合工业制造全流程能耗与排放因子,支持实时监测与历史数据追溯分析。',
- tags: ['公益数据'],
- price: '免费'
- },
- {
- id: 4,
- name: 'ecoinvent数据库',
- description: '国际权威生命周期评价数据库,收录全球超过18000种过程数据与排放因子。',
- tags: ['商业数据'],
- price: '付费'
- },
- {
- id: 5,
- name: 'ecoinvent数据库',
- description: '国际权威生命周期评价数据库,收录全球超过18000种过程数据与排放因子。',
- tags: ['商业数据'],
- price: '付费'
- },
- {
- id: 6,
- name: '天工数据库',
- description: '整合工业制造全流程能耗与排放因子,支持实时监测与历史数据追溯分析。',
- tags: ['公益数据'],
- price: '免费'
- },
- {
- id: 1,
- name: '宝山绿色低碳数据创新实验室',
- description: '聚焦区域低碳发展数据汇聚与分析,提供碳排放核算模型与可视化报告。',
- tags: ['公共数据', '社会性数据'],
- price: '免费'
- },
- ],
+ cardList: [],
+ pagination: {
+ pageNo: 1,
+ pageSize: 10,
+ total: 0
+ },
// 移动端筛选折叠状态
filterCollapsed: true,
};
@@ -164,18 +127,39 @@ export default {
if (this.selectedType === 'all') {
return this.cardList;
}
- const typeMap = {
- 'public': '公共数据',
- 'factor': '因子库',
- 'social': '社会性数据'
- };
- const targetTag = typeMap[this.selectedType];
- return this.cardList.filter(card => card.tags.includes(targetTag));
+ return this.cardList.filter(card => card.sjlxDm === this.selectedType);
}
},
+ mounted() {
+ this.loadData();
+ },
methods: {
+ loadData() {
+ const params = {
+ pageNo: this.pagination.pageNo,
+ pageSize: this.pagination.pageSize,
+ sjlxDm: this.selectedType === 'all' ? '' : this.selectedType,
+ nr: ''
+ };
+ gxzxApi.sjscList(params).then(res => {
+ if (res && res.data && res.data.records) {
+ this.cardList = res.data.records.map(item => ({
+ id: item.uuid,
+ name: item.sjmc,
+ description: item.sjms,
+ tags: item.sjlxMc ? [item.sjlxMc] : [],
+ price: '免费',
+ llcs: item.llcs,
+ xzcs: item.xzcs
+ }));
+ this.pagination.total = res.data.total;
+ }
+ });
+ },
handleTypeChange(value) {
this.selectedType = value;
+ this.pagination.pageNo = 1;
+ this.loadData();
},
isActiveTab(path) {
return this.$route.path === path;
@@ -184,7 +168,7 @@ export default {
this.$router.push(path);
},
handlePublish() {
- // 发布数据逻辑
+ this.$router.push({ path: '/sjscfb' });
},
goToDataList(id) {
this.$router.push({ path: '/tsjlbc', query: { id } });
@@ -194,7 +178,8 @@ export default {
'公共数据': 'tag-green',
'社会性数据': 'tag-blue',
'商业数据': 'tag-gray',
- '公益数据': 'tag-green'
+ '公益数据': 'tag-green',
+ '因子库': 'tag-orange'
};
return classMap[tag] || 'tag-gray';
}
diff --git a/txw-mhzc-web/src/pages/index/views/glxtSy/glxtSy.vue b/txw-mhzc-web/src/pages/index/views/glxtSy/glxtSy.vue
index adf6fa6..7fef4a3 100644
--- a/txw-mhzc-web/src/pages/index/views/glxtSy/glxtSy.vue
+++ b/txw-mhzc-web/src/pages/index/views/glxtSy/glxtSy.vue
@@ -98,12 +98,12 @@ export default {
icon: 'user',
name: 'qyrenzheng',
},
- {
- id: 'qyruzhu',
- title: '企业入驻',
- icon: 'user',
- name: 'qyruzhu',
- },
+ // {
+ // id: 'qyruzhu',
+ // title: '企业入驻',
+ // icon: 'user',
+ // name: 'qyruzhu',
+ // },
],
},
{
@@ -114,13 +114,13 @@ export default {
children: [
{
id: 'tfwgj',
- title: '碳服务供给',
+ title: '碳服务管理',
icon: 'user',
name: 'tfwgj',
},
{
id: 'tfwxq',
- title: '碳服务需求',
+ title: '碳需求管理',
icon: 'user',
name: 'tfwxq',
},
@@ -191,22 +191,50 @@ export default {
},
activated() {
- console.log("glxtSy.vue,created==>", this.$route)
- // this.initView();
- let cdId = this.cdList[0].id;
- const activeCompo = this.$route.query.activeCompo;
- if (activeCompo) {
- // this.changeHandler(activeCompo);
- cdId = activeCompo;
+ console.log("glxtSy.vue,activated==>", this.$route)
+ this.syncMenuWithRoute();
+ },
+ watch: {
+ '$route'() {
+ this.syncMenuWithRoute();
}
-
- this.activeMenuId = cdId;
- this.gotoPage(cdId);
},
methods: {
+ syncMenuWithRoute() {
+ const path = this.$route.path;
+ const match = path.match(/\/yhzx\/(\w+)/);
+ if (match) {
+ const routeName = match[1];
+ for (const item of this.cdList) {
+ if (item.name === routeName) {
+ this.activeMenuId = item.id;
+ this.expanded = [item.id];
+ return;
+ }
+ if (item.children) {
+ const child = item.children.find(c => c.name === routeName);
+ if (child) {
+ this.activeMenuId = child.id;
+ this.expanded = [item.id];
+ return;
+ }
+ }
+ }
+ }
+ },
gotoPage(menuId) {
+ const flattenMenu = (list) => {
+ const result = []
+ list.forEach(item => {
+ result.push(item)
+ if (item.children) {
+ item.children.forEach(child => result.push(child))
+ }
+ })
+ return result
+ }
- const menu = this.cdList.find((item) => item.id == menuId)
+ const menu = flattenMenu(this.cdList).find(item => item.id == menuId)
console.log("当前菜单配置:", menu)
@@ -430,4 +458,20 @@ export default {
.yhzx-box::-webkit-scrollbar {
display: none;
}
+.htglMenu .t-submenu__title {
+ font-weight: bold;
+ color: #333;
+ font-size: 15px;
+}
+.htglMenu .t-menu__item {
+ font-size: 14px;
+ color: #666;
+}
+.htglMenu .t-menu__item:hover {
+ color: #2e7d32;
+}
+
+.htglMenu .t-submenu__item {
+ padding-left: 56px !important;
+}
diff --git a/txw-mhzc-web/src/pages/index/views/gzt/components/EnterpriseCert.vue b/txw-mhzc-web/src/pages/index/views/gzt/components/EnterpriseCert.vue
index ee8fc39..cc1b883 100644
--- a/txw-mhzc-web/src/pages/index/views/gzt/components/EnterpriseCert.vue
+++ b/txw-mhzc-web/src/pages/index/views/gzt/components/EnterpriseCert.vue
@@ -5,7 +5,7 @@
diff --git a/txw-mhzc-web/src/pages/index/views/fwsc/sjlbc.vue b/txw-mhzc-web/src/pages/index/views/fwsc/sjlbc.vue
index 0eee12a..e2e06ce 100644
--- a/txw-mhzc-web/src/pages/index/views/fwsc/sjlbc.vue
+++ b/txw-mhzc-web/src/pages/index/views/fwsc/sjlbc.vue
@@ -44,84 +44,63 @@
-
-
-
- 获取联系方式
+
+
-
-
-
-
- 数据类型
-
- ▲
- ▲
+
+
+
+ {{ row.sjbt }}
-
- 名称
-
- 发布时间/更新时间
-
- ▲
- ▲
-
-
-
- 数据条数
-
- ▲
- ▲
-
-
-
- 浏览量
-
- ▲
- ▲
-
-
-
- 下载量
-
- ▲
- ▲
-
-
-
-
+
+
+ {{ row.name }}
+
+
+ {{ row.updateTime || row.publishTime }}
+
+
+ {{ row.dataCount === '0' ? '/' : row.dataCount + '条' }}
+
+
+ {{ row.sjms || '-' }}
+
+
+
-
-
-
- {{ item.type }}
-
-
- {{ item.name }}
-
-
-
- 发布时间:{{ item.publishTime }}
- 更新时间:{{ item.updateTime }}
-
- {{ item.dataCount }}条
- {{ item.views }}次浏览
- {{ item.downloads }}次下载
-
- 上一页
- 1
- 2
- 3
- 4
- 5
- 下一页
-
+
+
+
+
+
+
+ 联系人:
+ {{ currentContact.lxr || '-' }}
+
+
+ 联系电话:
+ {{ currentContact.lxdh || '-' }}
+
+
+ 联系邮箱:
+ {{ currentContact.lxyx || '-' }}
+
+ 暂无联系方式
+ 企业认证
- {{ statusText }} +
@@ -60,6 +60,16 @@ export default {
},
};
},
+ computed: {
+ statusText() {
+ const statusMap = {
+ 0: '待审核',
+ 1: '已认证',
+ 2: '未通过',
+ };
+ return statusMap[this.certData.qylx] || '';
+ },
+ },
mounted() {
this.fetchCertData();
},
@@ -188,6 +198,7 @@ export default {
color: #344F3D;
}
}
+
.name-icon {
display: flex;
width: 20px;
@@ -197,6 +208,7 @@ export default {
background-position: center;
margin-right: 4px;
}
+
.eid-icon {
display: flex;
width: 20px;
@@ -206,6 +218,7 @@ export default {
background-position: center;
margin-right: 4px;
}
+
.cert-icon {
display: flex;
width: 20px;
diff --git a/txw-mhzc-web/src/pages/index/views/gzt/components/QuickActions.vue b/txw-mhzc-web/src/pages/index/views/gzt/components/QuickActions.vue
index f93a87a..8aacdad 100644
--- a/txw-mhzc-web/src/pages/index/views/gzt/components/QuickActions.vue
+++ b/txw-mhzc-web/src/pages/index/views/gzt/components/QuickActions.vue
@@ -38,9 +38,9 @@ export default {
return {
actions: [
{ label: '发布服务', to: '/yhzx/tfwgj', icon: 'upload', bgColor: '#E6F8F0', color: '#344F3D' },
- { label: '发布数据', to: '/yhzx/tfwgj?action=publishData', icon: 'cloud-upload', bgColor: '#E6F8F0', color: '#344F3D' },
+ // { label: '发布数据', to: '/yhzx/tfwgj?action=publishData', icon: 'cloud-upload', bgColor: '#E6F8F0', color: '#344F3D' },
{ label: '发布需求', to: '/yhzx/tfwxq', icon: 'edit', bgColor: '#E6F8F0', color: '#344F3D' },
- { label: '资质申请', to: '/yhzx/zzgl', icon: 'bulletpoint', bgColor: '#E6F8F0', color: '#344F3D' },
+ // { label: '资质申请', to: '/yhzx/zzgl', icon: 'bulletpoint', bgColor: '#E6F8F0', color: '#344F3D' },
],
};
},
diff --git a/txw-mhzc-web/src/pages/index/views/gzt/index.vue b/txw-mhzc-web/src/pages/index/views/gzt/index.vue
index b15a3a6..b0595b7 100644
--- a/txw-mhzc-web/src/pages/index/views/gzt/index.vue
+++ b/txw-mhzc-web/src/pages/index/views/gzt/index.vue
@@ -22,7 +22,7 @@
@@ -103,7 +103,7 @@ import PolicyNews from './components/PolicyNews.vue';
import EnterpriseCert from './components/EnterpriseCert.vue';
import QuickActions from './components/QuickActions.vue';
import AccountShortcuts from './components/AccountShortcuts.vue';
-import { SettingIcon } from 'tdesign-icons-vue';
+import gztApi from '@/pages/index/api/gzt/index.js';
export default {
name: 'DashboardIndex',
@@ -115,6 +115,19 @@ export default {
QuickActions,
AccountShortcuts,
},
+ data() {
+ return {
+ stats: {
+ wdgxCount: 0,
+ wdxqCount: 0,
+ lsjyCount: 0,
+ dclxxCount: 0,
+ },
+ };
+ },
+ mounted() {
+ this.fetchStats();
+ },
computed: {
currentDate() {
const now = new Date();
@@ -126,6 +139,18 @@ export default {
return `${year}年${month}月${day}日 ${weekday}`;
},
},
+ methods: {
+ async fetchStats() {
+ try {
+ const res = await gztApi.getStats();
+ if (res.data) {
+ this.stats = res.data;
+ }
+ } catch (err) {
+ console.error('获取工作台统计数据失败', err);
+ }
+ },
+ },
};
diff --git a/txw-mhzc-web/src/pages/index/views/home2/index.vue b/txw-mhzc-web/src/pages/index/views/home2/index.vue
index c290b7f..1c395ae 100644
--- a/txw-mhzc-web/src/pages/index/views/home2/index.vue
+++ b/txw-mhzc-web/src/pages/index/views/home2/index.vue
@@ -283,7 +283,7 @@ export default {
{
name1: '身份基石',
name2: '碳数字身份体系',
- desc: '为企业构建唯一的链上"绿卡",集成资质核验证、资产托管与信用评级,打造绿色经济的数字通行证。',
+ desc: '为企业构建唯一的链上"数字身份",集成资质核验证、资产托管与信用评级,打造绿色经济的数字通行证。',
icon: require('@/pages/index/views/home2/assets/identity-base@2x.png')
},
{
diff --git a/txw-mhzc-web/src/pages/index/views/hyzt/index.vue b/txw-mhzc-web/src/pages/index/views/hyzt/index.vue
index 7cc4246..844b274 100644
--- a/txw-mhzc-web/src/pages/index/views/hyzt/index.vue
+++ b/txw-mhzc-web/src/pages/index/views/hyzt/index.vue
@@ -2,7 +2,7 @@
快捷入口
- 管理 +行业专题
-
+
diff --git a/txw-mhzc-web/src/pages/index/views/qych/index.vue b/txw-mhzc-web/src/pages/index/views/qych/index.vue
index 117d6c2..6b76242 100644
--- a/txw-mhzc-web/src/pages/index/views/qych/index.vue
+++ b/txw-mhzc-web/src/pages/index/views/qych/index.vue
@@ -5,15 +5,15 @@
- gxfb(@RequestBody GxfbReqVO reqVO){
return CommonResult.success(gxxxbService.gxfb(reqVO));
@@ -87,4 +99,48 @@ public class GxdtController {
return CommonResult.success(gxxxbService.getGxxx(gxuuid));
}
+ // ==================== 数据市场相关接口 ====================
+
+ @Operation(summary = "数据市场数据库列表", description = "分页查询数据市场数据库列表")
+ @PostMapping("/sjscList")
+ public CommonResult> sjscList(@RequestBody SjscReqVO reqVO){
+ return CommonResult.success(sjscbService.sjscList(reqVO));
+ }
+
+ @Operation(summary = "我的数据市场列表", description = "分页查询用户发布的数据市场列表")
+ @PostMapping("/sjscListByYh")
+ public CommonResult> sjscListByYh(@RequestBody SjscReqVO reqVO){
+ return CommonResult.success(sjscbService.sjscListByYh(reqVO));
+ }
+
+ @Operation(summary = "发布数据市场", description = "发布数据市场数据库")
+ @PostMapping("/sjscfb")
+ public CommonResult sjscfb(@RequestBody SjscReqVO reqVO){
+ return CommonResult.success(sjscbService.sjscfb(reqVO));
+ }
+
+ @Operation(summary = "数据市场详情", description = "获取数据市场数据库详情")
+ @GetMapping("/getSjsc")
+ public CommonResult getSjsc(@RequestParam("uuid") String uuid){
+ return CommonResult.success(sjscbService.getSjsc(uuid));
+ }
+
+ @Operation(summary = "数据列表", description = "分页查询数据列表")
+ @PostMapping("/sjlbbList")
+ public CommonResult> sjlbbList(@RequestBody SjlbbReqVO reqVO){
+ return CommonResult.success(sjlbbService.sjlbbList(reqVO));
+ }
+
+ @Operation(summary = "数据详情", description = "获取数据详情")
+ @GetMapping("/getSjlbb")
+ public CommonResult getSjlbb(@RequestParam("uuid") String uuid){
+ return CommonResult.success(sjlbbService.getSjlbb(uuid));
+ }
+
+ @GetMapping("/getStats")
+ @Operation(summary = "工作台统计", description = "获取工作台统计数据(我的供给、我的需求、绿色交易、待处理消息)")
+ public CommonResult getStats(){
+ return CommonResult.success(gxzxStatsService.getStats());
+ }
+
}
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/TxwGxzxSjlbbMapper.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/TxwGxzxSjlbbMapper.java
new file mode 100644
index 0000000..537bcea
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/TxwGxzxSjlbbMapper.java
@@ -0,0 +1,38 @@
+package com.css.txw.mhzc.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.css.txw.mhzc.pojo.domain.TxwGxzxSjlbbDO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.css.txw.mhzc.pojo.vo.SjlbbReqVO;
+
+/**
+* @author Claude
+* @description 针对表【txw_gxzx_sjsc_sjlbb(数据市场数据列表表)】的数据库操作Mapper
+* @createDate 2026-04-29
+*/
+public interface TxwGxzxSjlbbMapper extends BaseMapper {
+
+ default Page sjlbbList(SjlbbReqVO reqVO) {
+ Page page = new Page<>(reqVO.getPageNo(), reqVO.getPageSize());
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.lambda()
+ .eq(TxwGxzxSjlbbDO::getSjscUuid, reqVO.getSjscUuid())
+ .eq(TxwGxzxSjlbbDO::getZt, "3")
+ .ge(reqVO.getPriceMin() != null, TxwGxzxSjlbbDO::getJg, reqVO.getPriceMin())
+ .le(reqVO.getPriceMax() != null, TxwGxzxSjlbbDO::getJg, reqVO.getPriceMax())
+ .le(reqVO.getValidDate() != null, TxwGxzxSjlbbDO::getYxq, reqVO.getValidDate())
+ .orderByDesc(TxwGxzxSjlbbDO::getLrrq);
+ return selectPage(page, wrapper);
+ }
+
+ default Page sjlbbListByYh(SjlbbReqVO reqVO, String yhuuid) {
+ Page page = new Page<>(reqVO.getPageNo(), reqVO.getPageSize());
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.lambda()
+ .eq(TxwGxzxSjlbbDO::getLrruuid, yhuuid)
+ .eq(!com.css.ggzc.framework.common.util.gy.GyUtils.isNull(reqVO.getSjscUuid()), TxwGxzxSjlbbDO::getSjscUuid, reqVO.getSjscUuid())
+ .orderByDesc(TxwGxzxSjlbbDO::getLrrq);
+ return selectPage(page, wrapper);
+ }
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/TxwGxzxSjscbMapper.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/TxwGxzxSjscbMapper.java
new file mode 100644
index 0000000..0c6e5c6
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/mapper/TxwGxzxSjscbMapper.java
@@ -0,0 +1,38 @@
+package com.css.txw.mhzc.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.css.txw.mhzc.pojo.domain.TxwGxzxSjscbDO;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.css.txw.mhzc.pojo.vo.SjscReqVO;
+
+/**
+* @author Claude
+* @description 针对表【txw_gxzx_sjscb(数据市场数据库表)】的数据库操作Mapper
+* @createDate 2026-04-29
+*/
+public interface TxwGxzxSjscbMapper extends BaseMapper {
+
+ default Page sjscList(SjscReqVO reqVO) {
+ Page page = new Page<>(reqVO.getPageNo(), reqVO.getPageSize());
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.lambda()
+ .eq(TxwGxzxSjscbDO::getSjzt, "Y")
+ .eq(TxwGxzxSjscbDO::getZt, "3")
+ .eq(!com.css.ggzc.framework.common.util.gy.GyUtils.isNull(reqVO.getSjlxDm()), TxwGxzxSjscbDO::getSjlxDm, reqVO.getSjlxDm())
+ .like(!com.css.ggzc.framework.common.util.gy.GyUtils.isNull(reqVO.getNr()), TxwGxzxSjscbDO::getSjmc, reqVO.getNr())
+ .orderByDesc(TxwGxzxSjscbDO::getLrrq);
+ return selectPage(page, wrapper);
+ }
+
+ default Page sjscListByYh(SjscReqVO reqVO, String yhuuid) {
+ Page page = new Page<>(reqVO.getPageNo(), reqVO.getPageSize());
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.lambda()
+ .eq(TxwGxzxSjscbDO::getLrruuid, yhuuid)
+ .eq(!com.css.ggzc.framework.common.util.gy.GyUtils.isNull(reqVO.getSjlxDm()), TxwGxzxSjscbDO::getSjlxDm, reqVO.getSjlxDm())
+ .like(!com.css.ggzc.framework.common.util.gy.GyUtils.isNull(reqVO.getNr()), TxwGxzxSjscbDO::getSjmc, reqVO.getNr())
+ .orderByDesc(TxwGxzxSjscbDO::getLrrq);
+ return selectPage(page, wrapper);
+ }
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/TxwGxzxSjlbbDO.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/TxwGxzxSjlbbDO.java
new file mode 100644
index 0000000..e956646
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/TxwGxzxSjlbbDO.java
@@ -0,0 +1,183 @@
+package com.css.txw.mhzc.pojo.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 数据市场数据列表表
+ * @TableName txw_gxzx_sjsc_sjlbb
+ */
+@TableName(value ="txw_gxzx_sjsc_sjlbb")
+@Data
+public class TxwGxzxSjlbbDO implements Serializable {
+ /**
+ * UUID||UUID
+ */
+ @TableId(value = "uuid")
+ private String uuid;
+
+ /**
+ * 数据市场UUID(关联txw_gxzx_sjscb)
+ */
+ @TableField(value = "sjsc_uuid")
+ private String sjscUuid;
+
+ /**
+ * 数据类型代码
+ */
+ @TableField(value = "sjlx_dm")
+ private String sjlxDm;
+
+ /**
+ * 数据名称
+ */
+ @TableField(value = "sjmc")
+ private String sjmc;
+
+ /**
+ * 数据描述
+ */
+ @TableField(value = "sjms")
+ private String sjms;
+
+ /**
+ * 数据标签
+ */
+ @TableField(value = "sjbt")
+ private String sjbt;
+
+ /**
+ * 价格
+ */
+ @TableField(value = "jg")
+ private BigDecimal jg;
+
+ /**
+ * 价格单位
+ */
+ @TableField(value = "jg_dw")
+ private String jgDw;
+
+ /**
+ * 有效期
+ */
+ @TableField(value = "yxq")
+ private Date yxq;
+
+ /**
+ * 数据格式
+ */
+ @TableField(value = "sjgs")
+ private String sjgs;
+
+ /**
+ * 数据单位
+ */
+ @TableField(value = "sjdw")
+ private String sjdw;
+
+ /**
+ * 数据条数
+ */
+ @TableField(value = "sjsl")
+ private Integer sjsl;
+
+ /**
+ * 浏览次数
+ */
+ @TableField(value = "llcs")
+ private Integer llcs;
+
+ /**
+ * 下载次数
+ */
+ @TableField(value = "xzcs")
+ private Integer xzcs;
+
+ /**
+ * 数据文件地址
+ */
+ @TableField(value = "sjwz")
+ private String sjwz;
+
+ /**
+ * 扩展文件
+ */
+ @TableField(value = "kzwj")
+ private String kzwj;
+
+ /**
+ * 联系人
+ */
+ @TableField(value = "lxr")
+ private String lxr;
+
+ /**
+ * 联系电话
+ */
+ @TableField(value = "lxdh")
+ private String lxdh;
+
+ /**
+ * 电子邮箱
+ */
+ @TableField(value = "email")
+ private String email;
+
+ /**
+ * 状态(1=正常,2=待审,3=通过,4=驳回)
+ */
+ @TableField(value = "zt")
+ private String zt;
+
+ /**
+ * 企业UUID
+ */
+ @TableField(value = "qyuuid")
+ private String qyuuid;
+
+ /**
+ * 企业名称
+ */
+ @TableField(value = "qymc")
+ private String qymc;
+
+ /**
+ * 纳税人识别号
+ */
+ @TableField(value = "nsrsbh")
+ private String nsrsbh;
+
+ /**
+ * 录入日期
+ */
+ @TableField(value = "lrrq")
+ private Date lrrq;
+
+ /**
+ * 录入人UUID
+ */
+ @TableField(value = "lrruuid")
+ private String lrruuid;
+
+ /**
+ * 修改日期
+ */
+ @TableField(value = "xgrq")
+ private Date xgrq;
+
+ /**
+ * 修改人UUID
+ */
+ @TableField(value = "xgruuid")
+ private String xgruuid;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/TxwGxzxSjscbDO.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/TxwGxzxSjscbDO.java
new file mode 100644
index 0000000..20fab6f
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/domain/TxwGxzxSjscbDO.java
@@ -0,0 +1,164 @@
+package com.css.txw.mhzc.pojo.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 数据市场数据库表
+ * @TableName txw_gxzx_sjscb
+ */
+@TableName(value ="txw_gxzx_sjscb")
+@Data
+public class TxwGxzxSjscbDO implements Serializable {
+ /**
+ * UUID||UUID
+ */
+ @TableId(value = "uuid")
+ private String uuid;
+
+ /**
+ * 数据类型代码(public=公共数据,factor=因子库,social=社会性数据)
+ */
+ @TableField(value = "sjlx_dm")
+ private String sjlxDm;
+
+ /**
+ * 数据类型名称
+ */
+ @TableField(value = "sjlx_mc")
+ private String sjlxMc;
+
+ /**
+ * 数据库名称
+ */
+ @TableField(value = "sjmc")
+ private String sjmc;
+
+ /**
+ * 数据库描述
+ */
+ @TableField(value = "sjms")
+ private String sjms;
+
+ /**
+ * 数据标签(多个逗号分隔)
+ */
+ @TableField(value = "sjbt")
+ private String sjbt;
+
+ /**
+ * 企业UUID
+ */
+ @TableField(value = "qyuuid")
+ private String qyuuid;
+
+ /**
+ * 企业名称
+ */
+ @TableField(value = "qymc")
+ private String qymc;
+
+ /**
+ * 纳税人识别号
+ */
+ @TableField(value = "nsrsbh")
+ private String nsrsbh;
+
+ /**
+ * 上架状态(Y=已上架,N=未上架)
+ */
+ @TableField(value = "sjzt")
+ private String sjzt;
+
+ /**
+ * 状态(1=正常,2=待审,3=通过,4=驳回)
+ */
+ @TableField(value = "zt")
+ private String zt;
+
+ /**
+ * 浏览次数
+ */
+ @TableField(value = "llcs")
+ private Integer llcs;
+
+ /**
+ * 下载次数
+ */
+ @TableField(value = "xzcs")
+ private Integer xzcs;
+
+ /**
+ * 扩展文件
+ */
+ @TableField(value = "kzwj")
+ private String kzwj;
+
+ /**
+ * 数据来源
+ */
+ @TableField(value = "sjly")
+ private String sjly;
+
+ /**
+ * 数据网站名
+ */
+ @TableField(value = "sjwzm")
+ private String sjwzm;
+
+ /**
+ * 数据网站地址
+ */
+ @TableField(value = "sjwz")
+ private String sjwz;
+
+ /**
+ * 联系人
+ */
+ @TableField(value = "lxr")
+ private String lxr;
+
+ /**
+ * 联系电话
+ */
+ @TableField(value = "lxdh")
+ private String lxdh;
+
+ /**
+ * 电子邮箱
+ */
+ @TableField(value = "email")
+ private String email;
+
+ /**
+ * 录入日期
+ */
+ @TableField(value = "lrrq")
+ private Date lrrq;
+
+ /**
+ * 录入人UUID
+ */
+ @TableField(value = "lrruuid")
+ private String lrruuid;
+
+ /**
+ * 修改日期
+ */
+ @TableField(value = "xgrq")
+ private Date xgrq;
+
+ /**
+ * 修改人UUID
+ */
+ @TableField(value = "xgruuid")
+ private String xgruuid;
+
+ @TableField(exist = false)
+ private static final long serialVersionUID = 1L;
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/DashboardStatsVO.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/DashboardStatsVO.java
new file mode 100644
index 0000000..839b0b6
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/DashboardStatsVO.java
@@ -0,0 +1,18 @@
+package com.css.txw.mhzc.pojo.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class DashboardStatsVO implements Serializable {
+
+ private Integer wdgxCount;
+
+ private Integer wdxqCount;
+
+ private Integer lsjyCount;
+
+ private Integer dclxxCount;
+
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/SjlbbReqVO.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/SjlbbReqVO.java
new file mode 100644
index 0000000..852f1b9
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/SjlbbReqVO.java
@@ -0,0 +1,36 @@
+package com.css.txw.mhzc.pojo.vo;
+
+import com.css.ggzc.framework.common.pojo.PageParam;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 数据市场数据列表请求
+ */
+@Data
+public class SjlbbReqVO extends PageParam implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 数据市场UUID
+ */
+ private String sjscUuid;
+
+ /**
+ * 最低价格
+ */
+ private BigDecimal priceMin;
+
+ /**
+ * 最高价格
+ */
+ private BigDecimal priceMax;
+
+ /**
+ * 有效期
+ */
+ private Date validDate;
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/SjlbbVO.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/SjlbbVO.java
new file mode 100644
index 0000000..4925803
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/SjlbbVO.java
@@ -0,0 +1,139 @@
+package com.css.txw.mhzc.pojo.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 数据市场数据列表 VO
+ */
+@Data
+public class SjlbbVO implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * UUID
+ */
+ private String uuid;
+
+ /**
+ * 数据市场UUID
+ */
+ private String sjscUuid;
+
+ /**
+ * 数据类型代码
+ */
+ private String sjlxDm;
+
+ /**
+ * 数据名称
+ */
+ private String sjmc;
+
+ /**
+ * 数据描述
+ */
+ private String sjms;
+
+ /**
+ * 数据标签
+ */
+ private String sjbt;
+
+ /**
+ * 价格
+ */
+ private BigDecimal jg;
+
+ /**
+ * 价格单位
+ */
+ private String jgDw;
+
+ /**
+ * 有效期
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ private Date yxq;
+
+ /**
+ * 数据格式
+ */
+ private String sjgs;
+
+ /**
+ * 数据单位
+ */
+ private String sjdw;
+
+ /**
+ * 数据条数
+ */
+ private Integer sjsl;
+
+ /**
+ * 浏览次数
+ */
+ private Integer llcs;
+
+ /**
+ * 下载次数
+ */
+ private Integer xzcs;
+
+ /**
+ * 数据文件地址
+ */
+ private String sjwz;
+
+ /**
+ * 扩展文件
+ */
+ private String kzwj;
+
+ /**
+ * 联系人
+ */
+ private String lxr;
+
+ /**
+ * 联系电话
+ */
+ private String lxdh;
+
+ /**
+ * 电子邮箱
+ */
+ private String email;
+
+ /**
+ * 状态
+ */
+ private String zt;
+
+ /**
+ * 企业UUID
+ */
+ private String qyuuid;
+
+ /**
+ * 企业名称
+ */
+ private String qymc;
+
+ /**
+ * 录入日期
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date lrrq;
+
+ /**
+ * 修改日期
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date xgrq;
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/SjscReqVO.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/SjscReqVO.java
new file mode 100644
index 0000000..991c997
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/SjscReqVO.java
@@ -0,0 +1,24 @@
+package com.css.txw.mhzc.pojo.vo;
+
+import com.css.ggzc.framework.common.pojo.PageParam;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 数据市场列表请求
+ */
+@Data
+public class SjscReqVO extends PageParam implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 数据类型代码(public=公共数据,factor=因子库,social=社会性数据)
+ */
+ private String sjlxDm;
+
+ /**
+ * 关键词搜索
+ */
+ private String nr;
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/SjscVO.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/SjscVO.java
new file mode 100644
index 0000000..07117f0
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/pojo/vo/SjscVO.java
@@ -0,0 +1,122 @@
+package com.css.txw.mhzc.pojo.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 数据市场数据库表 VO
+ */
+@Data
+public class SjscVO implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * UUID
+ */
+ private String uuid;
+
+ /**
+ * 数据类型代码
+ */
+ private String sjlxDm;
+
+ /**
+ * 数据类型名称
+ */
+ private String sjlxMc;
+
+ /**
+ * 数据库名称
+ */
+ private String sjmc;
+
+ /**
+ * 数据库描述
+ */
+ private String sjms;
+
+ /**
+ * 数据标签
+ */
+ private String sjbt;
+
+ /**
+ * 企业UUID
+ */
+ private String qyuuid;
+
+ /**
+ * 企业名称
+ */
+ private String qymc;
+
+ /**
+ * 上架状态
+ */
+ private String sjzt;
+
+ /**
+ * 状态
+ */
+ private String zt;
+
+ /**
+ * 浏览次数
+ */
+ private Integer llcs;
+
+ /**
+ * 下载次数
+ */
+ private Integer xzcs;
+
+ /**
+ * 扩展文件
+ */
+ private String kzwj;
+
+ /**
+ * 数据来源
+ */
+ private String sjly;
+
+ /**
+ * 数据网站名
+ */
+ private String sjwzm;
+
+ /**
+ * 数据网站地址
+ */
+ private String sjwz;
+
+ /**
+ * 联系人
+ */
+ private String lxr;
+
+ /**
+ * 联系电话
+ */
+ private String lxdh;
+
+ /**
+ * 电子邮箱
+ */
+ private String email;
+
+ /**
+ * 录入日期
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date lrrq;
+
+ /**
+ * 修改日期
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date xgrq;
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/GxzxStatsService.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/GxzxStatsService.java
new file mode 100644
index 0000000..06fffd0
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/GxzxStatsService.java
@@ -0,0 +1,9 @@
+package com.css.txw.mhzc.service;
+
+import com.css.txw.mhzc.pojo.vo.DashboardStatsVO;
+
+public interface GxzxStatsService {
+
+ DashboardStatsVO getStats();
+
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/TxwGxzxSjlbbService.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/TxwGxzxSjlbbService.java
new file mode 100644
index 0000000..1ef9949
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/TxwGxzxSjlbbService.java
@@ -0,0 +1,28 @@
+package com.css.txw.mhzc.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.css.txw.mhzc.pojo.domain.TxwGxzxSjlbbDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.css.txw.mhzc.pojo.vo.SjlbbReqVO;
+import com.css.txw.mhzc.pojo.vo.SjlbbVO;
+
+/**
+ * 数据市场数据列表表 Service
+ */
+public interface TxwGxzxSjlbbService extends IService {
+
+ /**
+ * 分页查询数据列表
+ */
+ Page sjlbbList(SjlbbReqVO reqVO);
+
+ /**
+ * 分页查询用户发布的数据列表
+ */
+ Page sjlbbListByYh(SjlbbReqVO reqVO, String yhuuid);
+
+ /**
+ * 获取数据详情
+ */
+ SjlbbVO getSjlbb(String uuid);
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/TxwGxzxSjscbService.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/TxwGxzxSjscbService.java
new file mode 100644
index 0000000..f4161ff
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/TxwGxzxSjscbService.java
@@ -0,0 +1,33 @@
+package com.css.txw.mhzc.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.css.txw.mhzc.pojo.domain.TxwGxzxSjscbDO;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.css.txw.mhzc.pojo.vo.SjscReqVO;
+import com.css.txw.mhzc.pojo.vo.SjscVO;
+
+/**
+ * 数据市场数据库表 Service
+ */
+public interface TxwGxzxSjscbService extends IService {
+
+ /**
+ * 分页查询数据市场列表
+ */
+ Page sjscList(SjscReqVO reqVO);
+
+ /**
+ * 分页查询用户发布的数据市场列表
+ */
+ Page sjscListByYh(SjscReqVO reqVO);
+
+ /**
+ * 发布数据市场
+ */
+ String sjscfb(SjscReqVO reqVO);
+
+ /**
+ * 获取数据市场详情
+ */
+ SjscVO getSjsc(String uuid);
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/impl/GxzxStatsServiceImpl.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/impl/GxzxStatsServiceImpl.java
new file mode 100644
index 0000000..62f9ab7
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/impl/GxzxStatsServiceImpl.java
@@ -0,0 +1,62 @@
+package com.css.txw.mhzc.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.css.ggzc.framework.common.util.gy.GyUtils;
+import com.css.ggzc.framework.session.SessionUtils;
+import com.css.txw.mhzc.mapper.TxwGxzxGxxxbMapper;
+import com.css.txw.mhzc.mapper.TxwGxzxShqkbMapper;
+import com.css.txw.mhzc.pojo.domain.GxzxLsjyZcxx;
+import com.css.txw.mhzc.pojo.domain.TxwGxzxGxxxbDO;
+import com.css.txw.mhzc.pojo.vo.DashboardStatsVO;
+import com.css.txw.mhzc.service.GxzxLsjyZcxxService;
+import com.css.txw.mhzc.service.GxzxStatsService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+@Slf4j
+@Service
+public class GxzxStatsServiceImpl implements GxzxStatsService {
+
+ @Resource
+ private TxwGxzxGxxxbMapper gxxxbMapper;
+
+ @Resource
+ private TxwGxzxShqkbMapper shqkbMapper;
+
+ @Resource
+ private GxzxLsjyZcxxService gxzxLsjyZcxxService;
+
+ @Override
+ public DashboardStatsVO getStats() {
+ DashboardStatsVO statsVO = new DashboardStatsVO();
+ String yhUuid = SessionUtils.getYhUuid();
+ String qyuuid = SessionUtils.getQyuuid();
+
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.lambda()
+ .eq(TxwGxzxGxxxbDO::getLrruuid, yhUuid)
+ .eq(TxwGxzxGxxxbDO::getYwlxDm, "01");
+ long wdgxCount = gxxxbMapper.selectCount(wrapper);
+ statsVO.setWdgxCount((int) wdgxCount);
+
+ wrapper = new QueryWrapper<>();
+ wrapper.lambda()
+ .eq(TxwGxzxGxxxbDO::getLrruuid, yhUuid)
+ .eq(TxwGxzxGxxxbDO::getYwlxDm, "02");
+ long wdxqCount = gxxxbMapper.selectCount(wrapper);
+ statsVO.setWdxqCount((int) wdxqCount);
+
+ QueryWrapper zcWrapper = new QueryWrapper<>();
+ zcWrapper.lambda()
+ .eq(GxzxLsjyZcxx::getQyuuid, qyuuid)
+ .eq(GxzxLsjyZcxx::getSjzt, "Y");
+ long lsjyCount = gxzxLsjyZcxxService.count(zcWrapper);
+ statsVO.setLsjyCount((int) lsjyCount);
+
+ statsVO.setDclxxCount(0);
+
+ return statsVO;
+ }
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/impl/TxwGxzxSjlbbServiceImpl.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/impl/TxwGxzxSjlbbServiceImpl.java
new file mode 100644
index 0000000..ee7d81e
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/impl/TxwGxzxSjlbbServiceImpl.java
@@ -0,0 +1,59 @@
+package com.css.txw.mhzc.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.css.ggzc.framework.common.util.object.BeanUtils;
+import com.css.txw.mhzc.mapper.TxwGxzxSjlbbMapper;
+import com.css.txw.mhzc.pojo.domain.TxwGxzxSjlbbDO;
+import com.css.txw.mhzc.pojo.vo.SjlbbReqVO;
+import com.css.txw.mhzc.pojo.vo.SjlbbVO;
+import com.css.txw.mhzc.service.TxwGxzxSjlbbService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * 数据市场数据列表表 Service实现
+ */
+@Service
+public class TxwGxzxSjlbbServiceImpl extends ServiceImpl
+ implements TxwGxzxSjlbbService {
+
+ @Resource
+ private TxwGxzxSjlbbMapper sjlbbMapper;
+
+ @Override
+ public Page sjlbbList(SjlbbReqVO reqVO) {
+ Page page = sjlbbMapper.sjlbbList(reqVO);
+ return convertToPage(page);
+ }
+
+ @Override
+ public Page sjlbbListByYh(SjlbbReqVO reqVO, String yhuuid) {
+ Page page = sjlbbMapper.sjlbbListByYh(reqVO, yhuuid);
+ return convertToPage(page);
+ }
+
+ @Override
+ public SjlbbVO getSjlbb(String uuid) {
+ TxwGxzxSjlbbDO sjlbbDO = getById(uuid);
+ if (sjlbbDO == null) return null;
+ SjlbbVO vo = BeanUtils.toBean(sjlbbDO, SjlbbVO.class);
+ // 浏览次数+1
+ TxwGxzxSjlbbDO updateDO = new TxwGxzxSjlbbDO();
+ updateDO.setUuid(uuid);
+ updateDO.setLlcs(sjlbbDO.getLlcs() == null ? 1 : sjlbbDO.getLlcs() + 1);
+ updateById(updateDO);
+ return vo;
+ }
+
+ private Page convertToPage(Page page) {
+ Page result = new Page<>();
+ result.setRecords(BeanUtils.toBean(page.getRecords(), SjlbbVO.class));
+ result.setSize(page.getSize());
+ result.setPages(page.getPages());
+ result.setTotal(page.getTotal());
+ result.setCurrent(page.getCurrent());
+ return result;
+ }
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/impl/TxwGxzxSjscbServiceImpl.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/impl/TxwGxzxSjscbServiceImpl.java
new file mode 100644
index 0000000..e3bb69f
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/service/impl/TxwGxzxSjscbServiceImpl.java
@@ -0,0 +1,79 @@
+package com.css.txw.mhzc.service.impl;
+
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.css.ggzc.framework.common.util.object.BeanUtils;
+import com.css.ggzc.framework.session.SessionUtils;
+import com.css.txw.mhzc.mapper.TxwGxzxSjscbMapper;
+import com.css.txw.mhzc.pojo.domain.TxwGxzxSjscbDO;
+import com.css.txw.mhzc.pojo.vo.SjscReqVO;
+import com.css.txw.mhzc.pojo.vo.SjscVO;
+import com.css.txw.mhzc.service.TxwGxzxSjscbService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+/**
+ * 数据市场数据库表 Service实现
+ */
+@Service
+public class TxwGxzxSjscbServiceImpl extends ServiceImpl
+ implements TxwGxzxSjscbService {
+
+ @Resource
+ private TxwGxzxSjscbMapper sjscbMapper;
+
+ @Override
+ public Page sjscList(SjscReqVO reqVO) {
+ Page page = sjscbMapper.sjscList(reqVO);
+ return convertToPage(page);
+ }
+
+ @Override
+ public Page sjscListByYh(SjscReqVO reqVO) {
+ Page page = sjscbMapper.sjscListByYh(reqVO, SessionUtils.getYhUuid());
+ return convertToPage(page);
+ }
+
+ @Transactional
+ @Override
+ public String sjscfb(SjscReqVO reqVO) {
+ TxwGxzxSjscbDO sjscbDO = BeanUtils.toBean(reqVO, TxwGxzxSjscbDO.class);
+ sjscbDO.setUuid(IdUtil.fastSimpleUUID());
+ sjscbDO.setQyuuid(SessionUtils.getQyuuid());
+ sjscbDO.setQymc((String) SessionUtils.get("qymc"));
+ sjscbDO.setNsrsbh(SessionUtils.getNsrsbh());
+ sjscbDO.setSjzt("N");
+ sjscbDO.setZt("2");
+ sjscbDO.setLrrq(new Date());
+ sjscbDO.setLrruuid(SessionUtils.getYhUuid());
+ save(sjscbDO);
+ return "success";
+ }
+
+ @Override
+ public SjscVO getSjsc(String uuid) {
+ TxwGxzxSjscbDO sjscbDO = getById(uuid);
+ if (sjscbDO == null) return null;
+ SjscVO vo = BeanUtils.toBean(sjscbDO, SjscVO.class);
+ // 浏览次数+1
+ TxwGxzxSjscbDO updateDO = new TxwGxzxSjscbDO();
+ updateDO.setUuid(uuid);
+ updateDO.setLlcs(sjscbDO.getLlcs() == null ? 1 : sjscbDO.getLlcs() + 1);
+ updateById(updateDO);
+ return vo;
+ }
+
+ private Page convertToPage(Page page) {
+ Page result = new Page<>();
+ result.setRecords(BeanUtils.toBean(page.getRecords(), SjscVO.class));
+ result.setSize(page.getSize());
+ result.setPages(page.getPages());
+ result.setTotal(page.getTotal());
+ result.setCurrent(page.getCurrent());
+ return result;
+ }
+}
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/resources/mapper/TxwGxzxSjlbbMapper.xml b/txw-mhzc/txw-mhzc-service-biz/src/main/resources/mapper/TxwGxzxSjlbbMapper.xml
new file mode 100644
index 0000000..e5a48e2
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/resources/mapper/TxwGxzxSjlbbMapper.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ uuid,sjsc_uuid,sjlx_dm,sjmc,sjms,sjbt,jg,jg_dw,yxq,sjgs,sjdw,sjsl,llcs,xzcs,sjwz,kzwj,lxr,lxdh,email,zt,qyuuid,qymc,nsrsbh,lrrq,lrruuid,xgrq,xgruuid
+
+
\ No newline at end of file
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/resources/mapper/TxwGxzxSjscbMapper.xml b/txw-mhzc/txw-mhzc-service-biz/src/main/resources/mapper/TxwGxzxSjscbMapper.xml
new file mode 100644
index 0000000..2f0db4b
--- /dev/null
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/resources/mapper/TxwGxzxSjscbMapper.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ uuid,sjlx_dm,sjlx_mc,sjmc,sjms,sjbt,qyuuid,qymc,nsrsbh,sjzt,zt,llcs,xzcs,kzwj,sjly,sjwzm,sjwz,lxr,lxdh,email,lrrq,lrruuid,xgrq,xgruuid
+
+
\ No newline at end of file
企业出海合规专题
-电池法案 / CBAM / 航运燃料 三大模块,一站式信息与系统入口
+
+
@@ -267,7 +267,7 @@ body {
/* 顶部标题区(关键修改:垂直布局实现左对齐) */
.header {
- height: 490px;
+ height: 380px;
padding-top: 120px;
margin-bottom: 30px;
background: url(../../assets/qych/banner.png);
diff --git a/txw-mhzc/sql/txw_gxzx_sjsc_sjlbb.sql b/txw-mhzc/sql/txw_gxzx_sjsc_sjlbb.sql
new file mode 100644
index 0000000..9cc17cd
--- /dev/null
+++ b/txw-mhzc/sql/txw_gxzx_sjsc_sjlbb.sql
@@ -0,0 +1,86 @@
+-- 数据市场数据列表表
+CREATE TABLE `txw_gxzx_sjsc_sjlbb` (
+ `uuid` VARCHAR(50) NOT NULL COMMENT 'UUID',
+ `sjsc_uuid` VARCHAR(50) NOT NULL COMMENT '数据市场UUID(关联txw_gxzx_sjscb)',
+ `sjlx_dm` VARCHAR(10) DEFAULT NULL COMMENT '数据类型代码',
+ `sjmc` VARCHAR(200) NOT NULL COMMENT '数据名称',
+ `sjms` TEXT COMMENT '数据描述',
+ `sjbt` VARCHAR(500) DEFAULT NULL COMMENT '数据标签',
+ `jg` DECIMAL(18,2) DEFAULT NULL COMMENT '价格',
+ `jg_dw` VARCHAR(20) DEFAULT NULL COMMENT '价格单位',
+ `yxq` DATE DEFAULT NULL COMMENT '有效期',
+ `sjgs` VARCHAR(50) DEFAULT NULL COMMENT '数据格式',
+ `sjdw` VARCHAR(50) DEFAULT NULL COMMENT '数据单位',
+ `sjsl` INT DEFAULT NULL COMMENT '数据条数',
+ `llcs` INT DEFAULT 0 COMMENT '浏览次数',
+ `xzcs` INT DEFAULT 0 COMMENT '下载次数',
+ `sjwz` VARCHAR(500) DEFAULT NULL COMMENT '数据文件地址',
+ `kzwj` VARCHAR(500) DEFAULT NULL COMMENT '扩展文件',
+ `lxr` VARCHAR(50) DEFAULT NULL COMMENT '联系人',
+ `lxdh` VARCHAR(50) DEFAULT NULL COMMENT '联系电话',
+ `email` VARCHAR(100) DEFAULT NULL COMMENT '电子邮箱',
+ `zt` CHAR(1) DEFAULT '1' COMMENT '状态(1=正常,2=待审,3=通过,4=驳回)',
+ `qyuuid` VARCHAR(50) DEFAULT NULL COMMENT '企业UUID',
+ `qymc` VARCHAR(200) DEFAULT NULL COMMENT '企业名称',
+ `nsrsbh` VARCHAR(50) DEFAULT NULL COMMENT '纳税人识别号',
+ `lrrq` DATETIME DEFAULT NULL COMMENT '录入日期',
+ `lrruuid` VARCHAR(50) DEFAULT NULL COMMENT '录入人UUID',
+ `xgrq` DATETIME DEFAULT NULL COMMENT '修改日期',
+ `xgruuid` VARCHAR(50) DEFAULT NULL COMMENT '修改人UUID',
+ PRIMARY KEY (`uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据市场数据列表表';
+
+-- 插入数据(绑定数据市场UUID:sjsc_001)
+INSERT INTO `txw_gxzx_sjsc_sjlbb` (
+ `uuid`, `sjsc_uuid`, `sjlx_dm`, `sjmc`, `sjms`, `sjbt`,
+ `jg`, `jg_dw`, `yxq`, `sjgs`, `sjdw`, `sjsl`,
+ `llcs`, `xzcs`, `sjwz`, `kzwj`,
+ `lxr`, `lxdh`, `email`,
+ `zt`, `qyuuid`, `qymc`, `nsrsbh`,
+ `lrrq`, `lrruuid`, `xgrq`, `xgruuid`
+) VALUES
+-- 1. 上海市绿色低碳服务机构
+('sjlbb_001', 'sjsc_001', 'public', '上海市绿色低碳服务机构',
+ '该数据资源包含了上海市绿色低碳服务机构信息,数据来源于上海市经信委门户网站,主要包含机构名称、服务范围、联系人等字段信息。',
+ '公共数据', 0, '每年', NULL, NULL, NULL, 74, 0, 0, NULL, NULL, NULL, NULL, NULL, '3', NULL, NULL, NULL, '2025-09-22', 'system', NULL, NULL),
+
+-- 2. 上海市绿色低碳技术产品名单
+('sjlbb_002', 'sjsc_001', 'public', '上海市绿色低碳技术产品名单',
+ '该数据资源包含了上海市绿色低碳技术产品名单信息,数据来源于上海市经信委门户网站,主要包含企业名称、绿色低碳技术产品等字段信息。',
+ '公共数据', 0, '每年', NULL, NULL, NULL, 35, 0, 0, NULL, NULL, NULL, NULL, NULL, '3', NULL, NULL, NULL, '2025-09-22', 'system', NULL, NULL),
+
+-- 3. 上海市零碳创建标杆企业名单
+('sjlbb_003', 'sjsc_001', 'public', '上海市零碳创建标杆企业名单',
+ '该数据资源包含了上海市零碳创建标杆企业名单信息,数据来源于上海市经信委门户网站,主要包含企业名称、类型等字段信息。',
+ '公共数据', 0, '每年', NULL, NULL, NULL, 12, 0, 0, NULL, NULL, NULL, NULL, NULL, '3', NULL, NULL, NULL, '2025-09-22', 'system', NULL, NULL),
+
+-- 4. 上海市工业通信业碳管理试点名单
+('sjlbb_004', 'sjsc_001', 'public', '上海市工业通信业碳管理试点名单',
+ '该数据资源包含了上海市工业通信业碳管理试点名单信息,数据来源于上海市经信委门户网站,主要包含企业、试点名称、申报领域等字段信息。',
+ '公共数据', 0, '每年', NULL, NULL, NULL, 26, 0, 0, NULL, NULL, NULL, NULL, NULL, '3', NULL, NULL, NULL, '2025-09-22', 'system', NULL, NULL),
+
+-- 5. 资源环境效率
+('sjlbb_005', 'sjsc_001', 'public', '资源环境效率',
+ '资源环境效率的相关信息,包含GDP碳排放量、单位生产总值能耗等',
+ '公共数据', 0, '每年', NULL, NULL, NULL, 20, 0, 0, NULL, NULL, NULL, NULL, NULL, '3', NULL, NULL, NULL, '2026-03-15', 'system', NULL, NULL),
+
+-- 6. 公共机构绿色低碳发展典型案例
+('sjlbb_006', 'sjsc_001', 'public', '公共机构绿色低碳发展典型案例',
+ '2023-2024年度全国公共机构绿色低碳发展典型案例的名单,主要包含案例名称、编写单位、方向等信息',
+ '公共数据', 0, '每年', NULL, NULL, NULL, 10, 0, 0, NULL, NULL, NULL, NULL, NULL, '3', NULL, NULL, NULL, '2025-09-22', 'system', NULL, NULL),
+
+-- 7. 碳汇监测告警信息
+('sjlbb_007', 'sjsc_001', 'public', '碳汇监测告警信息',
+ '碳汇数据告警记录',
+ '公共数据', 0, '每年', NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, '3', NULL, NULL, NULL, '2026-03-28', 'system', NULL, NULL),
+
+-- 8. 碳汇监测信息
+('sjlbb_008', 'sjsc_001', 'public', '碳汇监测信息',
+ '对碳汇基础数据采集信息记录',
+ '公共数据', 0, '每年', NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, '3', NULL, NULL, NULL, '2026-03-28', 'system', NULL, NULL),
+
+-- 9. 碳汇监测指标评分
+('sjlbb_009', 'sjsc_001', 'public', '碳汇监测指标评分',
+ '对碳汇指标评分信息记录',
+ '公共数据', 0, '每年', NULL, NULL, NULL, NULL, 0, 0, NULL, NULL, NULL, NULL, NULL, '3', NULL, NULL, NULL, '2026-03-28', 'system', NULL, NULL);
+
\ No newline at end of file
diff --git a/txw-mhzc/sql/txw_gxzx_sjscb.sql b/txw-mhzc/sql/txw_gxzx_sjscb.sql
new file mode 100644
index 0000000..23c014a
--- /dev/null
+++ b/txw-mhzc/sql/txw_gxzx_sjscb.sql
@@ -0,0 +1,43 @@
+-- 数据市场数据库表
+CREATE TABLE `txw_gxzx_sjscb` (
+ `uuid` VARCHAR(50) NOT NULL COMMENT 'UUID',
+ `sjlx_dm` VARCHAR(10) DEFAULT NULL COMMENT '数据类型代码(public=公共数据,factor=因子库,social=社会性数据)',
+ `sjlx_mc` VARCHAR(100) DEFAULT NULL COMMENT '数据类型名称',
+ `sjmc` VARCHAR(200) NOT NULL COMMENT '数据库名称',
+ `sjms` TEXT COMMENT '数据库描述',
+ `sjbt` VARCHAR(500) DEFAULT NULL COMMENT '数据标签(多个逗号分隔)',
+ `qyuuid` VARCHAR(50) DEFAULT NULL COMMENT '企业UUID',
+ `qymc` VARCHAR(200) DEFAULT NULL COMMENT '企业名称',
+ `nsrsbh` VARCHAR(50) DEFAULT NULL COMMENT '纳税人识别号',
+ `sjzt` CHAR(1) DEFAULT 'N' COMMENT '上架状态(Y=已上架,N=未上架)',
+ `zt` CHAR(1) DEFAULT '1' COMMENT '状态(1=正常,2=待审,3=通过,4=驳回)',
+ `llcs` INT DEFAULT 0 COMMENT '浏览次数',
+ `xzcs` INT DEFAULT 0 COMMENT '下载次数',
+ `kzwj` VARCHAR(500) DEFAULT NULL COMMENT '扩展文件',
+ `sjly` VARCHAR(500) DEFAULT NULL COMMENT '数据来源',
+ `sjwzm` VARCHAR(200) DEFAULT NULL COMMENT '数据网站名',
+ `sjwz` VARCHAR(500) DEFAULT NULL COMMENT '数据网站地址',
+ `lxr` VARCHAR(50) DEFAULT NULL COMMENT '联系人',
+ `lxdh` VARCHAR(50) DEFAULT NULL COMMENT '联系电话',
+ `email` VARCHAR(100) DEFAULT NULL COMMENT '电子邮箱',
+ `lrrq` DATETIME DEFAULT NULL COMMENT '录入日期',
+ `lrruuid` VARCHAR(50) DEFAULT NULL COMMENT '录入人UUID',
+ `xgrq` DATETIME DEFAULT NULL COMMENT '修改日期',
+ `xgruuid` VARCHAR(50) DEFAULT NULL COMMENT '修改人UUID',
+ PRIMARY KEY (`uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据市场数据库表';
+
+-- 插入示例数据:宝山绿色低碳数据创新实验室
+INSERT INTO `txw_gxzx_sjscb` (
+ `uuid`, `sjlx_dm`, `sjlx_mc`, `sjmc`, `sjms`, `sjbt`,
+ `qyuuid`, `qymc`, `nsrsbh`, `sjzt`, `zt`, `llcs`, `xzcs`,
+ `sjly`, `sjwzm`, `sjwz`, `lxr`, `lxdh`, `email`,
+ `lrrq`, `lrruuid`, `xgrq`, `xgruuid`
+) VALUES (
+ 'sjsc_001', 'public', '公共数据', '宝山绿色低碳数据创新实验室',
+ '聚焦区域低碳发展数据汇聚与分析,提供碳排放核算模型与可视化报告',
+ '公共数据',
+ NULL, NULL, NULL, 'Y', '3', 0, 0,
+ NULL, NULL, NULL, NULL, NULL, NULL,
+ NOW(), 'system', NULL, NULL
+);
\ No newline at end of file
diff --git a/txw-mhzc/sql/碳信网数据市场产品清单.csv b/txw-mhzc/sql/碳信网数据市场产品清单.csv
new file mode 100644
index 0000000..cefdf0e
--- /dev/null
+++ b/txw-mhzc/sql/碳信网数据市场产品清单.csv
@@ -0,0 +1,10 @@
+,数据产品,摘要,数据来源部门,数据量(条),更新频率,更新日期
+,上海市绿色低碳服务机构,该数据资源包含了上海市绿色低碳服务机构信息,数据来源于上海市经信委门户网站,主要包含机构名称、服务范围、联系人等字段信息。,上海市经济和信息化委员会,74,不定期,2025/9/22
+,上海市绿色低碳技术产品名单,该数据资源包含了上海市绿色低碳技术产品名单信息,数据来源于上海市经信委门户网站,主要包含企业名称、绿色低碳技术产品等字段信息。,上海市经济和信息化委员会,35,不定期,2025/9/22
+,上海市零碳创建标杆企业名单,该数据资源包含了上海市零碳创建标杆企业名单信息,数据来源于上海市经信委门户网站,主要包含企业名称、类型等字段信息。,上海市经济和信息化委员会,12,不定期,2025/9/22
+,上海市工业通信业碳管理试点名单,该数据资源包含了上海市工业通信业碳管理试点名单信息,数据来源于上海市经信委门户网站,主要包含企业、试点名称、申报领域等字段信息。,上海市经济和信息化委员会,26,不定期,2025/9/22
+,资源环境效率,资源环境效率的相关信息,包含GDP碳排放量、单位生产总值能耗等,上海市生态环境局,20,每年,2026/3/15
+,公共机构绿色低碳发展典型案例,2023-2024年度全国公共机构绿色低碳发展典型案例的名单,主要包含案例名称、编写单位、方向等信息,上海市机关事务管理局,10,不定期,2025/9/22
+,碳汇监测告警信息,碳汇数据告警记录,上海市绿化和市容管理局,/,每天,2026/3/28
+,碳汇监测信息,对碳汇基础数据采集信息记录,上海市绿化和市容管理局,/,每年,2026/3/28
+,碳汇监测指标评分,对碳汇指标评分信息记录,上海市绿化和市容管理局,/,每年,2026/3/28
diff --git a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/controller/GxdtController.java b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/controller/GxdtController.java
index bff7abb..69a5000 100644
--- a/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/controller/GxdtController.java
+++ b/txw-mhzc/txw-mhzc-service-biz/src/main/java/com/css/txw/mhzc/controller/GxdtController.java
@@ -3,9 +3,12 @@ package com.css.txw.mhzc.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.css.ggzc.framework.common.pojo.CommonResult;
import com.css.txw.mhzc.pojo.vo.*;
+import com.css.txw.mhzc.service.GxzxStatsService;
import com.css.txw.mhzc.service.TxwGxzxGxscbService;
import com.css.txw.mhzc.service.TxwGxzxGxxxbService;
import com.css.txw.mhzc.service.TxwGxzxShqkbService;
+import com.css.txw.mhzc.service.TxwGxzxSjscbService;
+import com.css.txw.mhzc.service.TxwGxzxSjlbbService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.validation.annotation.Validated;
@@ -29,6 +32,15 @@ public class GxdtController {
@Resource
private TxwGxzxGxscbService gxscbService;
+ @Resource
+ private TxwGxzxSjscbService sjscbService;
+
+ @Resource
+ private TxwGxzxSjlbbService sjlbbService;
+
+ @Resource
+ private GxzxStatsService gxzxStatsService;
+
@PostMapping("/gxfb")
public CommonResult