feat:修复页面自适应问题,添加共性能力后端接口
This commit is contained in:
parent
e40076ff25
commit
5e650aef52
3
.gitignore
vendored
3
.gitignore
vendored
@ -70,3 +70,6 @@ devops/docker-compose.override.yml
|
||||
|
||||
# Added by code-review-graph
|
||||
.code-review-graph/
|
||||
|
||||
# graphify 临时分析产物(不提交,可随时删除)
|
||||
**/graphify-out/
|
||||
|
||||
@ -423,4 +423,10 @@ CREATE TABLE `system_oauth2_approve` (
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='OAuth2授权批准表';
|
||||
|
||||
-- ----------------------------
|
||||
-- txw-mhzc 共性能力平台(收录 + 收藏)
|
||||
-- DDL 详见 txw-mhzc/sql/txw_mhzc_gxnl_slxxb_gxscb.sql
|
||||
-- 初始数据详见 txw-mhzc/sql/gxnl_wzxx_import_from_excel.sql
|
||||
-- ----------------------------
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
|
||||
@ -40,6 +40,7 @@ css:
|
||||
- /sso/userinfo/get
|
||||
- /sso/oauth2/token
|
||||
- /mhzc/sy/**
|
||||
- /mhzc/gxnl/wzxx/list
|
||||
- /sso/did/pub/**
|
||||
- /sso/auth/didBindPhone
|
||||
api:
|
||||
|
||||
140
scripts/gen_gxnl_import_sql.py
Normal file
140
scripts/gen_gxnl_import_sql.py
Normal file
@ -0,0 +1,140 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import openpyxl
|
||||
import uuid
|
||||
import re
|
||||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
EXCEL_PATH = ROOT / '可信碳共性能力网站导航.xlsx'
|
||||
OUT_SQL = ROOT / 'txw-mhzc' / 'sql' / 'gxnl_wzxx_import_from_excel.sql'
|
||||
|
||||
FL_NAMES = {
|
||||
'01': '碳核算平台',
|
||||
'02': '碳认证机构',
|
||||
'03': '碳交易平台',
|
||||
'04': '碳金融服务',
|
||||
'05': '碳技术咨询',
|
||||
}
|
||||
|
||||
TYPE_TO_FL = {
|
||||
'产品碳足迹': '01',
|
||||
'企业碳管理平台': '01',
|
||||
'CBAM': '01',
|
||||
'碳核算/排放数据': '01',
|
||||
'科研平台': '01',
|
||||
'软件服务': '01',
|
||||
'国家部委': '01',
|
||||
'地方发改部门': '01',
|
||||
'地方生态环境部门': '01',
|
||||
'地方工信部门': '01',
|
||||
'国际碳标准/绿证': '02',
|
||||
'核查机构': '02',
|
||||
'行业标准/倡议': '02',
|
||||
'普惠平台': '02',
|
||||
'交易机构': '03',
|
||||
'咨询机构': '05',
|
||||
'国际组织': '05',
|
||||
'国际能源/环保机构': '05',
|
||||
'行业协会/平台': '05',
|
||||
}
|
||||
|
||||
|
||||
def parse_sheet(ws, skip_first_col=False):
|
||||
rows = list(ws.iter_rows(values_only=True))
|
||||
items = []
|
||||
cur_type = None
|
||||
for row in rows[1:]:
|
||||
vals = list(row)
|
||||
if skip_first_col:
|
||||
vals = vals[1:]
|
||||
t = vals[0] if len(vals) > 0 else None
|
||||
name = vals[1] if len(vals) > 1 else None
|
||||
url = vals[2] if len(vals) > 2 else None
|
||||
tags = vals[3] if len(vals) > 3 else None
|
||||
if t:
|
||||
cur_type = str(t).strip()
|
||||
name = str(name).strip() if name else ''
|
||||
url = str(url).strip() if url else ''
|
||||
tags = str(tags).strip() if tags else ''
|
||||
if not name or not url or url.lower() == 'none':
|
||||
continue
|
||||
if not url.startswith(('http://', 'https://')):
|
||||
continue
|
||||
items.append({'excelType': cur_type or '', 'bt': name, 'wzLj': url, 'bqjh': tags})
|
||||
return items
|
||||
|
||||
|
||||
def esc(s):
|
||||
if s is None:
|
||||
return 'NULL'
|
||||
return "'" + str(s).replace('\\', '\\\\').replace("'", "''") + "'"
|
||||
|
||||
|
||||
def norm_tags(excel_type, raw_tags):
|
||||
tags = []
|
||||
if raw_tags:
|
||||
parts = re.split(r'[,,、;;|/]', raw_tags)
|
||||
for p in parts:
|
||||
p = p.strip()
|
||||
if p and p not in tags:
|
||||
tags.append(p)
|
||||
if excel_type and excel_type not in tags:
|
||||
tags.insert(0, excel_type)
|
||||
if not tags and excel_type:
|
||||
tags = [excel_type]
|
||||
return ','.join(tags[:10])
|
||||
|
||||
|
||||
def main():
|
||||
wb = openpyxl.load_workbook(EXCEL_PATH, read_only=True)
|
||||
items = parse_sheet(wb['Sheet1'], True) + parse_sheet(wb['Sheet2'], False)
|
||||
|
||||
seen = set()
|
||||
unique = []
|
||||
for it in items:
|
||||
key = it['wzLj'].rstrip('/').lower()
|
||||
if key in seen:
|
||||
continue
|
||||
seen.add(key)
|
||||
unique.append(it)
|
||||
|
||||
now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
||||
lines = [
|
||||
'-- ============================================================',
|
||||
'-- 共性能力网站导航 Excel 导入数据',
|
||||
'-- 来源: 可信碳共性能力网站导航.xlsx',
|
||||
f'-- 生成时间: {now}',
|
||||
f'-- 记录数: {len(unique)}',
|
||||
'-- ============================================================',
|
||||
'SET NAMES utf8mb4;',
|
||||
'',
|
||||
]
|
||||
|
||||
unmapped = {}
|
||||
for idx, it in enumerate(unique, 1):
|
||||
fl = TYPE_TO_FL.get(it['excelType'])
|
||||
if not fl:
|
||||
unmapped[it['excelType']] = unmapped.get(it['excelType'], 0) + 1
|
||||
fl = '05'
|
||||
fl_mc = FL_NAMES[fl]
|
||||
bqjh = norm_tags(it['excelType'], it['bqjh'])
|
||||
jj = (it['bqjh'] or it['excelType'] or it['bt'])[:40]
|
||||
wz_uuid = uuid.uuid4().hex
|
||||
pxh = 1000 - idx
|
||||
lines.append(
|
||||
'INSERT INTO `txw_mhzc_gxnl_slxxb` '
|
||||
'(`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('
|
||||
f"{esc(wz_uuid)}, {esc(it['bt'])}, {esc(it['wzLj'])}, {esc(jj)}, {esc(fl)}, {esc(fl_mc)}, {esc(bqjh)}, "
|
||||
f"'2', 'Y', 'import', {esc(it['excelType'])}, {pxh}, '{now}', 'Y');"
|
||||
)
|
||||
|
||||
OUT_SQL.parent.mkdir(parents=True, exist_ok=True)
|
||||
OUT_SQL.write_text('\n'.join(lines) + '\n', encoding='utf-8')
|
||||
print('records', len(unique))
|
||||
print('unmapped', unmapped)
|
||||
print('written', OUT_SQL)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
42
txw-mhzc-web/src/pages/index/api/gxnl/index.js
Normal file
42
txw-mhzc-web/src/pages/index/api/gxnl/index.js
Normal file
@ -0,0 +1,42 @@
|
||||
import { fetchSso } from '@/core/request';
|
||||
|
||||
const basurl = '/mhzc/gxnl';
|
||||
|
||||
export default {
|
||||
/** 共性能力网站列表 */
|
||||
wzxxList(params = {}) {
|
||||
return fetchSso({
|
||||
url: `${basurl}/wzxx/list`,
|
||||
method: 'post',
|
||||
data: JSON.stringify(params),
|
||||
});
|
||||
},
|
||||
|
||||
/** 收录提交 */
|
||||
submitSlxx(params) {
|
||||
return fetchSso({
|
||||
url: `${basurl}/slxx/submit`,
|
||||
method: 'post',
|
||||
loading: true,
|
||||
data: JSON.stringify(params),
|
||||
});
|
||||
},
|
||||
|
||||
/** 收藏/取消收藏 */
|
||||
toggleGxsc(params) {
|
||||
return fetchSso({
|
||||
url: `${basurl}/gxsc/toggle`,
|
||||
method: 'post',
|
||||
data: JSON.stringify(params),
|
||||
});
|
||||
},
|
||||
|
||||
/** 我的收藏 */
|
||||
myFavoriteList(params = {}) {
|
||||
return fetchSso({
|
||||
url: `${basurl}/gxsc/myList`,
|
||||
method: 'post',
|
||||
data: JSON.stringify(params),
|
||||
});
|
||||
},
|
||||
};
|
||||
BIN
txw-mhzc-web/src/pages/index/assets/Group 7.png
Normal file
BIN
txw-mhzc-web/src/pages/index/assets/Group 7.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.0 MiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.0 MiB |
@ -5,6 +5,8 @@
|
||||
class="nav-box"
|
||||
:class="{ 'nav-box--mobile-menu-open': mobileMenuOpen }"
|
||||
>
|
||||
<div class="nav-figma-scale-viewport">
|
||||
<div class="nav-figma-scale-stage">
|
||||
<div class="nav-inner page-nav-inner">
|
||||
<div class="logo-box" @click="goHome">
|
||||
<span class="logo-mark">
|
||||
@ -51,6 +53,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 移动端汉堡菜单按钮 -->
|
||||
<div class="hamburger-btn" @click="toggleMobileMenu">
|
||||
<div :class="['hamburger-icon', { active: mobileMenuOpen }]">
|
||||
@ -596,6 +600,11 @@ export default {
|
||||
min-height: var(--page-nav-height);
|
||||
}
|
||||
|
||||
.nav-figma-scale-viewport,
|
||||
.nav-figma-scale-stage {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.logo-box {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@ -266,6 +266,7 @@
|
||||
@home-cta-head-to-btn-gap: 47px;
|
||||
|
||||
@home-footer-top: 4867px;
|
||||
@home-cta-design-height: (@home-footer-top - @home-cta-top);
|
||||
@home-footer-height: 212px;
|
||||
@home-footer-info-height: 148px;
|
||||
@home-footer-bar-height: 64px;
|
||||
@ -543,6 +544,495 @@
|
||||
--home-title-bar-height: @home-section-title-deco-height;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Figma 整页等比缩放(设计画布 1440 × 5079,随视口宽度 scale)
|
||||
// -----------------------------------------------------------------------------
|
||||
.home-figma-scale-page() {
|
||||
.home-figma-scale-viewport {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.home-figma-scale-stage {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
html.portal-figma-scale-active & {
|
||||
.home-figma-scale-viewport {
|
||||
width: 100%;
|
||||
height: var(--home-figma-visual-height, auto);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.home-figma-scale-stage {
|
||||
width: @home-design-width;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
transform: scale(var(--home-figma-scale, 1));
|
||||
transform-origin: top center;
|
||||
margin-bottom: var(--home-figma-stage-margin-bottom, 0);
|
||||
}
|
||||
|
||||
.container {
|
||||
width: @home-design-width;
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
/* 各区块高度由 JS 注入 --home-figma-*-design-height,至少填满一屏 */
|
||||
--home-section-min-h: var(--home-figma-section-design-height, @home-core-height);
|
||||
--home-news-section-min-h: var(--home-figma-news-section-design-height, @home-news-height);
|
||||
--home-cta-section-min-h: var(--home-figma-cta-design-height, @home-cta-design-height);
|
||||
|
||||
#section-hero.top-box {
|
||||
min-height: var(--home-figma-hero-design-height, @home-hero-height);
|
||||
height: var(--home-figma-hero-design-height, @home-hero-height);
|
||||
}
|
||||
|
||||
.core-section {
|
||||
min-height: var(--home-figma-section-design-height, @home-core-height);
|
||||
}
|
||||
|
||||
.capability-section {
|
||||
min-height: var(--home-figma-section-design-height, @home-ability-height);
|
||||
}
|
||||
|
||||
.overseas2-section {
|
||||
min-height: var(--home-figma-section-design-height, @home-export-height);
|
||||
}
|
||||
|
||||
.news-section {
|
||||
min-height: var(--home-figma-news-section-design-height, @home-news-height);
|
||||
}
|
||||
|
||||
.partner-section {
|
||||
min-height: var(--home-figma-partner-section-design-height, @home-partner-height);
|
||||
}
|
||||
|
||||
.bottom-box {
|
||||
height: var(--home-figma-cta-design-height, @home-cta-design-height);
|
||||
min-height: var(--home-figma-cta-design-height, @home-cta-design-height);
|
||||
}
|
||||
|
||||
.home-shelf--hero {
|
||||
flex: 1;
|
||||
min-height: var(--home-figma-hero-design-height, @home-hero-height);
|
||||
height: 100%;
|
||||
padding: @home-hero-content-padding-top 0 @home-space-64;
|
||||
gap: 0;
|
||||
}
|
||||
|
||||
.home-hero-content {
|
||||
flex: 0 1 auto;
|
||||
width: 100%;
|
||||
max-width: @home-content-width;
|
||||
margin-top: auto;
|
||||
gap: @home-hero-content-gap;
|
||||
}
|
||||
|
||||
.top-hero-actions {
|
||||
gap: @home-space-32;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.top-title-text {
|
||||
font-size: @home-font-size-56;
|
||||
}
|
||||
|
||||
.top-title-desc {
|
||||
font-size: @home-font-size-28;
|
||||
}
|
||||
|
||||
.hero-cards {
|
||||
gap: @home-feature-cards-gap;
|
||||
}
|
||||
|
||||
.home-shelf--core {
|
||||
min-height: var(--home-figma-section-design-height, @home-core-height);
|
||||
gap: @home-space-52;
|
||||
}
|
||||
|
||||
.home-shelf--capability {
|
||||
min-height: var(--home-figma-section-design-height, @home-ability-height);
|
||||
gap: @home-ability-title-to-grid-gap;
|
||||
}
|
||||
|
||||
.home-shelf--overseas {
|
||||
min-height: var(--home-figma-section-design-height, @home-export-height);
|
||||
gap: @home-export-title-to-list-gap;
|
||||
}
|
||||
|
||||
.home-shelf--news {
|
||||
min-height: var(--home-figma-news-section-design-height, @home-news-height);
|
||||
}
|
||||
|
||||
.home-shelf--partner {
|
||||
min-height: var(--home-figma-partner-section-design-height, @home-partner-height);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 覆盖 home2 桌面端 media query 中的 fluid/clamp,避免破坏 Figma 等比缩放 */
|
||||
html.portal-figma-scale-active {
|
||||
.portal-page .home-shelf--hero {
|
||||
justify-content: flex-start;
|
||||
gap: 0;
|
||||
}
|
||||
|
||||
.portal-page .home-hero-content {
|
||||
margin-top: auto;
|
||||
gap: @home-hero-content-gap;
|
||||
}
|
||||
|
||||
.portal-page .top-hero-actions {
|
||||
gap: @home-space-32;
|
||||
}
|
||||
|
||||
.portal-page .top-title-text {
|
||||
font-size: @home-font-size-56;
|
||||
}
|
||||
|
||||
.portal-page .top-title-desc {
|
||||
font-size: @home-font-size-28;
|
||||
}
|
||||
|
||||
.portal-page .hero-cards {
|
||||
gap: @home-feature-cards-gap;
|
||||
}
|
||||
|
||||
.portal-page #section-hero.top-box {
|
||||
min-height: var(--home-figma-hero-design-height, @home-hero-height) !important;
|
||||
height: var(--home-figma-hero-design-height, @home-hero-height) !important;
|
||||
}
|
||||
|
||||
.portal-page .home-shelf--hero {
|
||||
min-height: var(--home-figma-hero-design-height, @home-hero-height) !important;
|
||||
}
|
||||
|
||||
.portal-page .core-section,
|
||||
.portal-page .capability-section,
|
||||
.portal-page .overseas2-section {
|
||||
min-height: var(--home-figma-section-design-height, @home-core-height) !important;
|
||||
height: var(--home-figma-section-design-height, @home-core-height) !important;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.portal-page .news-section {
|
||||
min-height: var(--home-figma-news-section-design-height, @home-news-height) !important;
|
||||
height: var(--home-figma-news-section-design-height, @home-news-height) !important;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.portal-page .partner-section {
|
||||
min-height: var(--home-figma-partner-section-design-height, @home-partner-height) !important;
|
||||
height: var(--home-figma-partner-section-design-height, @home-partner-height) !important;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.portal-page .home-shelf--core,
|
||||
.portal-page .home-shelf--capability,
|
||||
.portal-page .home-shelf--overseas {
|
||||
min-height: var(--home-figma-section-design-height, @home-core-height) !important;
|
||||
}
|
||||
|
||||
.portal-page .home-shelf--news {
|
||||
min-height: var(--home-figma-news-section-design-height, @home-news-height) !important;
|
||||
}
|
||||
|
||||
.portal-page .home-shelf--partner {
|
||||
min-height: var(--home-figma-partner-section-design-height, @home-partner-height) !important;
|
||||
}
|
||||
|
||||
.portal-page .capability-section {
|
||||
background-color: @home-color-page-bg;
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.portal-page .overseas2-section {
|
||||
background-size: 100% 100%;
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.portal-page .home-shelf--capability,
|
||||
.portal-page .home-shelf--overseas {
|
||||
min-height: 100% !important;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/* CTA 独占一屏;页脚最后一屏贴底;整页高度由 JS 实测锁定 */
|
||||
.portal-page.page-box {
|
||||
box-sizing: border-box;
|
||||
height: var(--home-figma-visual-height) !important;
|
||||
max-height: var(--home-figma-visual-height) !important;
|
||||
overflow: hidden !important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
background: @home-color-footer-bar-bg !important;
|
||||
}
|
||||
|
||||
.portal-page .home-figma-scale-viewport {
|
||||
height: var(--home-figma-visual-height) !important;
|
||||
overflow: hidden !important;
|
||||
}
|
||||
|
||||
.portal-page .bottom-box {
|
||||
width: @home-design-width !important;
|
||||
max-width: @home-design-width !important;
|
||||
margin-left: 0 !important;
|
||||
margin-right: 0 !important;
|
||||
height: var(--home-figma-cta-design-height, @home-cta-design-height) !important;
|
||||
min-height: var(--home-figma-cta-design-height, @home-cta-design-height) !important;
|
||||
overflow: hidden;
|
||||
background-color: @home-color-cta-section-bg !important;
|
||||
}
|
||||
|
||||
.portal-page .bottom-box-bg {
|
||||
position: absolute !important;
|
||||
left: 0 !important;
|
||||
top: 0 !important;
|
||||
width: 100% !important;
|
||||
height: 100% !important;
|
||||
min-width: 0 !important;
|
||||
transform: none !important;
|
||||
object-fit: fill !important;
|
||||
object-position: top center !important;
|
||||
}
|
||||
|
||||
.portal-page .bottom-box::after {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.portal-page .portal-footer-shell,
|
||||
.portal-page .site-footer {
|
||||
flex-shrink: 0;
|
||||
width: @home-design-width !important;
|
||||
max-width: @home-design-width !important;
|
||||
margin-left: auto !important;
|
||||
margin-right: auto !important;
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
.content-wrap--home {
|
||||
background: @home-color-footer-bar-bg;
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// 门户落地页 Figma 等比缩放(fwsc / hyzt / qych / gxnlpt)
|
||||
// -----------------------------------------------------------------------------
|
||||
.portal-figma-scale-page() {
|
||||
.portal-figma-scale-viewport {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.portal-figma-scale-stage {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
html.portal-figma-scale-active & {
|
||||
.portal-figma-scale-viewport {
|
||||
width: 100%;
|
||||
height: var(--home-figma-visual-height, auto);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.portal-figma-scale-stage {
|
||||
width: @home-design-width;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
transform: scale(var(--home-figma-scale, 1));
|
||||
transform-origin: top center;
|
||||
margin-bottom: var(--home-figma-stage-margin-bottom, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
html.portal-figma-scale-active.portal-landing-figma-scale-active {
|
||||
.portal-landing-figma-page {
|
||||
box-sizing: border-box;
|
||||
height: var(--home-figma-visual-height, auto) !important;
|
||||
max-height: var(--home-figma-visual-height, none) !important;
|
||||
overflow: hidden !important;
|
||||
background: #f6f7fa !important;
|
||||
}
|
||||
|
||||
.content-wrap--landing-hub .portal-route-outlet {
|
||||
min-height: var(--portal-landing-first-screen-height) !important;
|
||||
}
|
||||
|
||||
.portal-page-shell.portal-landing-figma-page,
|
||||
.portal-landing-figma-page .main-content,
|
||||
.qych-landing {
|
||||
min-height: var(--portal-landing-first-screen-height) !important;
|
||||
}
|
||||
|
||||
.portal-page-shell .banner-section,
|
||||
.qych-landing .banner-section {
|
||||
height: @portal-landing-banner-height !important;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.hyzt-wrap .banner-bg {
|
||||
top: @hyzt-landing-bg-offset-top !important;
|
||||
width: 100% !important;
|
||||
height: @hyzt-landing-bg-height !important;
|
||||
min-height: @hyzt-landing-bg-height !important;
|
||||
}
|
||||
|
||||
.content-wrap--landing-hub .portal-page-shell .services-section,
|
||||
.qych-landing .services-section {
|
||||
margin-top: -@portal-landing-cards-overlap !important;
|
||||
padding-top: @portal-landing-cards-pt !important;
|
||||
padding-bottom: @portal-landing-cards-pb !important;
|
||||
|
||||
&::before,
|
||||
&::after {
|
||||
flex-grow: 0 !important;
|
||||
flex-basis: 0 !important;
|
||||
min-height: 0 !important;
|
||||
height: 0 !important;
|
||||
content: none !important;
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.hyzt-page-inner,
|
||||
.qych-page-inner {
|
||||
max-width: @hyzt-landing-content-width !important;
|
||||
}
|
||||
|
||||
.fwsc-page .services-grid {
|
||||
max-width: @home-content-width !important;
|
||||
}
|
||||
|
||||
.gxnlpt-page .page-content-wrap {
|
||||
max-width: @home-content-width !important;
|
||||
}
|
||||
|
||||
.qych-snap-section {
|
||||
min-height: var(--portal-landing-first-screen-height) !important;
|
||||
}
|
||||
|
||||
.content-wrap--landing-hub,
|
||||
.content-wrap--figma-portal {
|
||||
background: #f6f7fa;
|
||||
}
|
||||
}
|
||||
|
||||
// 服务中心子页:碳服务/需求/数据/金融市场列表
|
||||
html.portal-figma-scale-active.portal-market-figma-scale-active {
|
||||
.portal-market-figma-page {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
flex: 1 1 auto;
|
||||
min-height: var(--home-figma-visual-height, auto);
|
||||
background: #f5f5f5 !important;
|
||||
}
|
||||
|
||||
.portal-market-figma-page .portal-figma-scale-stage {
|
||||
min-height: var(--portal-market-shell-min-height, auto);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.content-wrap--figma-market .portal-route-outlet {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
flex-direction: column;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.portal-page-stack,
|
||||
.portal-page-stack--figma-market {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: var(--portal-scroll-height, 100%);
|
||||
}
|
||||
|
||||
.portal-page-stack .portal-layout-footer {
|
||||
flex-shrink: 0;
|
||||
width: 100%;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.portal-market-figma-page .secondary-nav-content {
|
||||
width: @home-content-width !important;
|
||||
max-width: @home-content-width !important;
|
||||
margin-left: auto !important;
|
||||
margin-right: auto !important;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.portal-market-figma-page .fwsc-main,
|
||||
.portal-market-figma-page .xqsc-main,
|
||||
.portal-market-figma-page .jrsc-main,
|
||||
.portal-market-figma-page .page-body,
|
||||
.portal-market-figma-page .content-wrapper {
|
||||
width: @home-content-width !important;
|
||||
max-width: @home-content-width !important;
|
||||
margin-left: auto !important;
|
||||
margin-right: auto !important;
|
||||
box-sizing: border-box;
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: calc(var(--portal-market-shell-min-height) - 62px);
|
||||
}
|
||||
|
||||
.portal-market-figma-page .content-area,
|
||||
.portal-market-figma-page .content-wrapper {
|
||||
flex: 1 1 auto;
|
||||
align-items: stretch;
|
||||
}
|
||||
|
||||
.content-wrap--figma-market {
|
||||
background: @home-color-footer-bar-bg;
|
||||
}
|
||||
}
|
||||
|
||||
// 顶栏与首页共用 html.portal-figma-scale-active + --home-figma-scale
|
||||
.home-figma-scale-nav() {
|
||||
html.portal-figma-scale-active .nav-box {
|
||||
height: var(--page-nav-height);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
html.portal-figma-scale-active .nav-figma-scale-viewport {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: var(--page-nav-height);
|
||||
overflow: hidden;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
html.portal-figma-scale-active .nav-figma-scale-stage {
|
||||
width: @home-design-width;
|
||||
height: @home-nav-height;
|
||||
flex-shrink: 0;
|
||||
transform: scale(var(--home-figma-scale, 1));
|
||||
transform-origin: top center;
|
||||
margin-bottom: var(--home-figma-nav-stage-margin-bottom, 0);
|
||||
}
|
||||
|
||||
html.portal-figma-scale-active .nav-figma-scale-stage .page-nav-inner {
|
||||
width: @home-content-width;
|
||||
max-width: @home-content-width;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
padding-left: 0;
|
||||
padding-right: 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html.portal-figma-scale-active .nav-figma-scale-stage .nav-inner,
|
||||
html.portal-figma-scale-active .nav-figma-scale-stage .menu-box,
|
||||
html.portal-figma-scale-active .nav-figma-scale-stage .option-wrapper,
|
||||
html.portal-figma-scale-active .nav-figma-scale-stage .option-box {
|
||||
height: @home-nav-height;
|
||||
min-height: @home-nav-height;
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// 共性能力页 150605:2210 / 150605:2534
|
||||
// -----------------------------------------------------------------------------
|
||||
@ -600,6 +1090,12 @@
|
||||
@portal-landing-cards-overlap-sm: 32px;
|
||||
@portal-landing-cards-pt: 60px;
|
||||
@portal-landing-cards-pb: 80px;
|
||||
@portal-landing-cards-pt-fluid: clamp(36px, 4.5vh, 60px);
|
||||
@portal-landing-cards-pb-fluid: clamp(24px, 3.5vh, 80px);
|
||||
@portal-landing-cards-pb-screen: clamp(20px, 2.5vh, 40px);
|
||||
/* 首屏卡片区垂直黄金分割:剩余空间上 38.2% / 下 61.8%,卡片落在 φ 点附近 */
|
||||
@portal-landing-golden-flex-top: 382;
|
||||
@portal-landing-golden-flex-bottom: 618;
|
||||
@hyzt-landing-cards-overlap: @portal-landing-cards-overlap;
|
||||
@hyzt-landing-cards-pt: @portal-landing-cards-pt;
|
||||
@hyzt-landing-cards-px: 30px;
|
||||
|
||||
@ -1,4 +1,9 @@
|
||||
// 门户页边距:Figma 1440 画布 · 1200 版心 · 左右各 120px 自适应留白
|
||||
@import './portal-landing-hub-layout.less';
|
||||
@import './home-figma-variables.less';
|
||||
|
||||
.home-figma-scale-nav();
|
||||
|
||||
:root {
|
||||
--page-content-max-width: 1200px;
|
||||
/* Figma 导航 logo:图标区 34px + 与字间距 12px → 「可」字左缘距版心左 46px */
|
||||
@ -161,26 +166,6 @@
|
||||
background: #f6f7fa;
|
||||
}
|
||||
|
||||
/* 首屏落地页:首屏占满滚动区,页脚在下滑后出现(勿用 flex:1 把页脚吸到首屏底) */
|
||||
.content-wrap--landing-hub {
|
||||
background: #f6f7fa;
|
||||
}
|
||||
|
||||
.content-wrap--landing-hub .portal-page-stack--landing-hub {
|
||||
min-height: auto;
|
||||
}
|
||||
|
||||
.content-wrap--landing-hub .portal-page-stack--landing-hub .portal-route-outlet {
|
||||
flex: 0 0 auto;
|
||||
min-height: var(--portal-scroll-height, 100%);
|
||||
}
|
||||
|
||||
.content-wrap--landing-hub .portal-page-stack--landing-hub .portal-page-shell {
|
||||
box-sizing: border-box;
|
||||
min-height: var(--portal-scroll-height, 100%);
|
||||
background: #f6f7fa;
|
||||
}
|
||||
|
||||
/* 短页:栈高度至少铺满滚动区,页脚贴底;长页:随内容增高,不在页脚后留白 */
|
||||
.portal-page-stack {
|
||||
display: flex;
|
||||
|
||||
@ -0,0 +1,152 @@
|
||||
// =============================================================================
|
||||
// 落地页首屏:Banner 350px + 卡片区黄金分割垂直定位 + 页脚下滑出现
|
||||
// =============================================================================
|
||||
|
||||
@import './home-figma-variables.less';
|
||||
@import './portal-landing-cards.less';
|
||||
|
||||
.portal-landing-first-screen() {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
box-sizing: border-box;
|
||||
min-height: var(--portal-scroll-height, calc(100vh - var(--page-offset-top, 64px)));
|
||||
background: #f6f7fa;
|
||||
}
|
||||
|
||||
// 卡片区:首屏剩余高度按黄金比 38.2% : 61.8% 分配上下留白,卡片落在 φ 点(略高于贴底)
|
||||
.portal-landing-cards-area() {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
min-height: 0;
|
||||
margin-top: -@portal-landing-cards-overlap;
|
||||
padding: @portal-landing-cards-pt-fluid 0 0;
|
||||
box-sizing: border-box;
|
||||
|
||||
&::before,
|
||||
&::after {
|
||||
content: '';
|
||||
display: block;
|
||||
flex-shrink: 1;
|
||||
flex-basis: 0;
|
||||
min-height: 0;
|
||||
width: 100%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
&::before {
|
||||
flex-grow: @portal-landing-golden-flex-top;
|
||||
}
|
||||
|
||||
&::after {
|
||||
flex-grow: @portal-landing-golden-flex-bottom;
|
||||
}
|
||||
|
||||
.services-grid {
|
||||
flex-shrink: 0;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.portal-landing-cards-area-flat() {
|
||||
&::before,
|
||||
&::after {
|
||||
content: none;
|
||||
display: none;
|
||||
flex: 0 0 0;
|
||||
}
|
||||
|
||||
padding-bottom: @portal-landing-cards-pb-screen;
|
||||
}
|
||||
|
||||
/* fwsc / hyzt:Main 布局 landingHubScrollFooter */
|
||||
.content-wrap--landing-hub {
|
||||
background: #f6f7fa;
|
||||
}
|
||||
|
||||
.content-wrap--landing-hub .portal-page-stack--landing-hub {
|
||||
min-height: auto;
|
||||
}
|
||||
|
||||
.content-wrap--landing-hub .portal-page-stack--landing-hub .portal-route-outlet {
|
||||
flex: 0 0 auto;
|
||||
min-height: var(--portal-scroll-height, calc(100vh - var(--page-offset-top, 64px)));
|
||||
}
|
||||
|
||||
.content-wrap--landing-hub .portal-page-stack--landing-hub .portal-page-shell {
|
||||
.portal-landing-first-screen();
|
||||
}
|
||||
|
||||
.content-wrap--landing-hub .portal-page-shell .banner-section {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.content-wrap--landing-hub .fwsc-page .main-content {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
flex-direction: column;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.content-wrap--landing-hub .portal-page-shell .services-section {
|
||||
.portal-landing-cards-area();
|
||||
}
|
||||
|
||||
.content-wrap--landing-hub .hyzt-wrap .services-section {
|
||||
padding-left: @hyzt-landing-cards-px;
|
||||
padding-right: @hyzt-landing-cards-px;
|
||||
}
|
||||
|
||||
/* 企业出海首屏 */
|
||||
.qych-landing {
|
||||
.portal-landing-first-screen();
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.qych-landing .banner-section {
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.qych-landing .services-section {
|
||||
.portal-landing-cards-area();
|
||||
padding-left: @hyzt-landing-cards-px;
|
||||
padding-right: @hyzt-landing-cards-px;
|
||||
}
|
||||
|
||||
// 窄屏:取消黄金分割、固定卡高(CSS 变量可穿透 scoped),改为自然流式排列
|
||||
@media (max-width: 1200px) {
|
||||
.content-wrap--landing-hub .portal-page-shell .services-section,
|
||||
.qych-landing .services-section {
|
||||
--portal-service-card-min-height: auto;
|
||||
margin-top: -@portal-landing-cards-overlap-md;
|
||||
.portal-landing-cards-area-flat();
|
||||
.portal-landing-card-shell-reset();
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.content-wrap--landing-hub .portal-page-shell .services-section,
|
||||
.qych-landing .services-section {
|
||||
margin-top: -@portal-landing-cards-overlap-md;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.content-wrap--landing-hub .portal-page-shell .services-section,
|
||||
.qych-landing .services-section {
|
||||
margin-top: -@portal-landing-cards-overlap-sm;
|
||||
padding-left: var(--page-gutter-x, 16px);
|
||||
padding-right: var(--page-gutter-x, 16px);
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (max-height: 720px) {
|
||||
.content-wrap--landing-hub .portal-page-shell .services-section,
|
||||
.qych-landing .services-section {
|
||||
padding-top: clamp(28px, 3vh, 40px);
|
||||
.portal-landing-cards-area-flat();
|
||||
}
|
||||
}
|
||||
128
txw-mhzc-web/src/pages/index/utils/home-figma-scale.js
Normal file
128
txw-mhzc-web/src/pages/index/utils/home-figma-scale.js
Normal file
@ -0,0 +1,128 @@
|
||||
/** Figma 首页画布 1440 × 5079,整页(含顶栏)等比缩放 */
|
||||
export const HOME_FIGMA_DESIGN_WIDTH = 1440;
|
||||
export const HOME_FIGMA_DESIGN_HEIGHT = 5079;
|
||||
export const HOME_FIGMA_NAV_HEIGHT = 64;
|
||||
export const HOME_FIGMA_HERO_HEIGHT = 686;
|
||||
export const HOME_FIGMA_CORE_HEIGHT = 686;
|
||||
export const HOME_FIGMA_ABILITY_HEIGHT = 686;
|
||||
export const HOME_FIGMA_EXPORT_HEIGHT = 686;
|
||||
export const HOME_FIGMA_NEWS_HEIGHT = 684;
|
||||
export const HOME_FIGMA_PARTNER_HEIGHT = 689;
|
||||
export const HOME_FIGMA_CTA_HEIGHT = 686;
|
||||
export const HOME_FIGMA_FOOTER_HEIGHT = 212;
|
||||
export const HOME_FIGMA_HERO_CONTENT_PAD = 64;
|
||||
export const HOME_FIGMA_SCALE_MIN_WIDTH = 768;
|
||||
/** 抵消 transform:scale 取整误差,避免 section 底部露 1~12px 白边 */
|
||||
export const HOME_FIGMA_FILL_VISUAL_BUFFER = 12;
|
||||
|
||||
function calcFillDesignHeight(baseHeight, vh, scale) {
|
||||
const filled = Math.ceil((vh + HOME_FIGMA_FILL_VISUAL_BUFFER) / scale) + 1;
|
||||
return Math.max(baseHeight, filled);
|
||||
}
|
||||
|
||||
export function calcHomeFigmaScale(viewportWidth, viewportHeight) {
|
||||
if (viewportWidth < HOME_FIGMA_SCALE_MIN_WIDTH) {
|
||||
return {
|
||||
enabled: false,
|
||||
scale: 1,
|
||||
stageMarginBottom: 0,
|
||||
navHeightPx: HOME_FIGMA_NAV_HEIGHT,
|
||||
heroDesignHeight: HOME_FIGMA_HERO_HEIGHT,
|
||||
sectionDesignHeight: HOME_FIGMA_CORE_HEIGHT,
|
||||
newsSectionDesignHeight: HOME_FIGMA_NEWS_HEIGHT,
|
||||
partnerSectionDesignHeight: HOME_FIGMA_PARTNER_HEIGHT,
|
||||
ctaDesignHeight: HOME_FIGMA_CTA_HEIGHT,
|
||||
designHeight: HOME_FIGMA_DESIGN_HEIGHT,
|
||||
};
|
||||
}
|
||||
|
||||
const scale = viewportWidth / HOME_FIGMA_DESIGN_WIDTH;
|
||||
const navHeightPx = HOME_FIGMA_NAV_HEIGHT * scale;
|
||||
const vh = viewportHeight || (typeof window !== 'undefined' ? window.innerHeight : 900);
|
||||
|
||||
const heroDesignHeight = calcFillDesignHeight(HOME_FIGMA_HERO_HEIGHT, vh, scale);
|
||||
const sectionDesignHeight = calcFillDesignHeight(HOME_FIGMA_CORE_HEIGHT, vh, scale);
|
||||
const newsSectionDesignHeight = calcFillDesignHeight(HOME_FIGMA_NEWS_HEIGHT, vh, scale);
|
||||
const partnerSectionDesignHeight = calcFillDesignHeight(HOME_FIGMA_PARTNER_HEIGHT, vh, scale);
|
||||
// CTA 独占一屏;页脚为固定高度 footer,不单独占屏
|
||||
const ctaDesignHeight = calcFillDesignHeight(HOME_FIGMA_CTA_HEIGHT, vh, scale);
|
||||
|
||||
const designHeight = HOME_FIGMA_DESIGN_HEIGHT
|
||||
+ (heroDesignHeight - HOME_FIGMA_HERO_HEIGHT)
|
||||
+ (sectionDesignHeight - HOME_FIGMA_CORE_HEIGHT)
|
||||
+ (sectionDesignHeight - HOME_FIGMA_ABILITY_HEIGHT)
|
||||
+ (sectionDesignHeight - HOME_FIGMA_EXPORT_HEIGHT)
|
||||
+ (newsSectionDesignHeight - HOME_FIGMA_NEWS_HEIGHT)
|
||||
+ (partnerSectionDesignHeight - HOME_FIGMA_PARTNER_HEIGHT)
|
||||
+ (ctaDesignHeight - HOME_FIGMA_CTA_HEIGHT);
|
||||
|
||||
return {
|
||||
enabled: true,
|
||||
scale,
|
||||
stageMarginBottom: designHeight * (scale - 1),
|
||||
navHeightPx,
|
||||
heroDesignHeight,
|
||||
sectionDesignHeight,
|
||||
newsSectionDesignHeight,
|
||||
partnerSectionDesignHeight,
|
||||
ctaDesignHeight,
|
||||
designHeight,
|
||||
};
|
||||
}
|
||||
|
||||
/** 写入 documentElement,供首页与顶栏共用同一 scale */
|
||||
export function applyHomeFigmaScaleToRoot(viewportWidth, viewportHeight) {
|
||||
const result = calcHomeFigmaScale(viewportWidth, viewportHeight);
|
||||
const root = document.documentElement;
|
||||
|
||||
if (!result.enabled) {
|
||||
root.classList.remove('portal-figma-scale-active');
|
||||
root.style.removeProperty('--home-figma-scale');
|
||||
root.style.removeProperty('--home-figma-stage-margin-bottom');
|
||||
root.style.removeProperty('--home-figma-nav-stage-margin-bottom');
|
||||
root.style.removeProperty('--home-figma-hero-design-height');
|
||||
root.style.removeProperty('--home-figma-section-design-height');
|
||||
root.style.removeProperty('--home-figma-news-section-design-height');
|
||||
root.style.removeProperty('--home-figma-partner-section-design-height');
|
||||
root.style.removeProperty('--home-figma-cta-design-height');
|
||||
root.style.removeProperty('--home-figma-visual-height');
|
||||
root.style.removeProperty('--home-section-min-h');
|
||||
root.style.removeProperty('--home-news-section-min-h');
|
||||
root.style.removeProperty('--page-nav-height');
|
||||
return result;
|
||||
}
|
||||
|
||||
root.classList.add('portal-figma-scale-active');
|
||||
root.style.setProperty('--home-figma-scale', String(result.scale));
|
||||
root.style.setProperty('--home-figma-stage-margin-bottom', `${result.stageMarginBottom}px`);
|
||||
root.style.setProperty('--home-figma-hero-design-height', `${result.heroDesignHeight}px`);
|
||||
root.style.setProperty('--home-figma-section-design-height', `${result.sectionDesignHeight}px`);
|
||||
root.style.setProperty('--home-figma-news-section-design-height', `${result.newsSectionDesignHeight}px`);
|
||||
root.style.setProperty('--home-figma-partner-section-design-height', `${result.partnerSectionDesignHeight}px`);
|
||||
root.style.setProperty('--home-figma-cta-design-height', `${result.ctaDesignHeight}px`);
|
||||
root.style.setProperty('--home-figma-visual-height', `${Math.ceil(result.designHeight * result.scale)}px`);
|
||||
root.style.setProperty('--home-section-min-h', `${result.sectionDesignHeight}px`);
|
||||
root.style.setProperty('--home-news-section-min-h', `${result.newsSectionDesignHeight}px`);
|
||||
root.style.setProperty('--page-nav-height', `${result.navHeightPx}px`);
|
||||
root.style.setProperty('--home-figma-nav-stage-margin-bottom', `${HOME_FIGMA_NAV_HEIGHT * (result.scale - 1)}px`);
|
||||
return result;
|
||||
}
|
||||
|
||||
export function clearHomeFigmaScaleFromRoot() {
|
||||
applyHomeFigmaScaleToRoot(HOME_FIGMA_SCALE_MIN_WIDTH - 1);
|
||||
}
|
||||
|
||||
/** 按 stage 实测布局高度修正 margin-bottom 与整页视觉高度,消除页脚下方空白 */
|
||||
export function syncHomeFigmaStageLayout(stageEl, scale) {
|
||||
if (!stageEl || !scale) return null;
|
||||
|
||||
const layoutHeight = stageEl.offsetHeight;
|
||||
const marginBottom = layoutHeight * (scale - 1);
|
||||
const visualHeight = layoutHeight * scale;
|
||||
const root = document.documentElement;
|
||||
|
||||
root.style.setProperty('--home-figma-stage-margin-bottom', `${marginBottom}px`);
|
||||
root.style.setProperty('--home-figma-visual-height', `${Math.ceil(visualHeight)}px`);
|
||||
|
||||
return { layoutHeight, visualHeight, marginBottom };
|
||||
}
|
||||
@ -0,0 +1,31 @@
|
||||
import { syncPortalFigmaStageLayout } from './portal-figma-scale';
|
||||
|
||||
/** 门户 Figma 等比缩放页:mounted/resize 时同步 stage 实测高度 */
|
||||
export default {
|
||||
mounted() {
|
||||
this._onPortalFigmaResize = () => {
|
||||
window.requestAnimationFrame(() => {
|
||||
window.requestAnimationFrame(() => this.syncPortalFigmaStageLayout());
|
||||
});
|
||||
};
|
||||
window.addEventListener('resize', this._onPortalFigmaResize);
|
||||
this.$nextTick(() => this.syncPortalFigmaStageLayout());
|
||||
},
|
||||
beforeDestroy() {
|
||||
if (this._onPortalFigmaResize) {
|
||||
window.removeEventListener('resize', this._onPortalFigmaResize);
|
||||
this._onPortalFigmaResize = null;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
syncPortalFigmaStageLayout() {
|
||||
if (window.innerWidth < 768) return;
|
||||
const stage = this.$refs.figmaStage;
|
||||
if (!stage) return;
|
||||
const scale = parseFloat(
|
||||
getComputedStyle(document.documentElement).getPropertyValue('--home-figma-scale'),
|
||||
) || (window.innerWidth / 1440);
|
||||
syncPortalFigmaStageLayout(stage, scale);
|
||||
},
|
||||
},
|
||||
};
|
||||
199
txw-mhzc-web/src/pages/index/utils/portal-figma-scale.js
Normal file
199
txw-mhzc-web/src/pages/index/utils/portal-figma-scale.js
Normal file
@ -0,0 +1,199 @@
|
||||
import {
|
||||
HOME_FIGMA_DESIGN_WIDTH,
|
||||
HOME_FIGMA_SCALE_MIN_WIDTH,
|
||||
HOME_FIGMA_NAV_HEIGHT,
|
||||
HOME_FIGMA_FILL_VISUAL_BUFFER,
|
||||
applyHomeFigmaScaleToRoot,
|
||||
clearHomeFigmaScaleFromRoot,
|
||||
syncHomeFigmaStageLayout,
|
||||
} from './home-figma-scale';
|
||||
|
||||
/** 落地页 / 市场页首屏最小设计高度(随视口撑满) */
|
||||
export const PORTAL_LANDING_FIRST_SCREEN_HEIGHT = 686;
|
||||
/** main.vue 中未参与 scale 的页脚大致高度 */
|
||||
export const PORTAL_LAYOUT_FOOTER_HEIGHT = 212;
|
||||
|
||||
const PORTAL_LANDING_PATHS = new Set(['/fwsc', '/hyzt', '/qych', '/gxnlpt']);
|
||||
const PORTAL_MARKET_PATHS = new Set(['/tfwsc', '/txqsc', '/tsjsc', '/tjrsc', '/tsjlbc']);
|
||||
|
||||
export function normalizePortalPath(path) {
|
||||
if (!path) return '';
|
||||
let p = path.split('?')[0];
|
||||
if (p.startsWith('/view/mhzc')) {
|
||||
p = p.slice('/view/mhzc'.length) || '/';
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
export function isPortalMarketPage(path) {
|
||||
return PORTAL_MARKET_PATHS.has(normalizePortalPath(path));
|
||||
}
|
||||
|
||||
export function isPortalLandingHubPage(path) {
|
||||
return PORTAL_LANDING_PATHS.has(normalizePortalPath(path));
|
||||
}
|
||||
|
||||
export function isHomeFigmaPage(path) {
|
||||
const p = normalizePortalPath(path);
|
||||
return p === '/home' || p === '/';
|
||||
}
|
||||
|
||||
export function isPortalFigmaScalePage(path) {
|
||||
return isHomeFigmaPage(path)
|
||||
|| isPortalLandingHubPage(path)
|
||||
|| isPortalMarketPage(path);
|
||||
}
|
||||
|
||||
function calcFillDesignHeight(baseHeight, vh, scale) {
|
||||
const filled = Math.ceil((vh + HOME_FIGMA_FILL_VISUAL_BUFFER) / scale) + 1;
|
||||
return Math.max(baseHeight, filled);
|
||||
}
|
||||
|
||||
export function calcLandingFigmaScale(viewportWidth, viewportHeight) {
|
||||
if (viewportWidth < HOME_FIGMA_SCALE_MIN_WIDTH) {
|
||||
return {
|
||||
enabled: false,
|
||||
scale: 1,
|
||||
shellMinDesignHeight: PORTAL_LANDING_FIRST_SCREEN_HEIGHT,
|
||||
navHeightPx: HOME_FIGMA_NAV_HEIGHT,
|
||||
};
|
||||
}
|
||||
|
||||
const scale = viewportWidth / HOME_FIGMA_DESIGN_WIDTH;
|
||||
const vh = viewportHeight || (typeof window !== 'undefined' ? window.innerHeight : 900);
|
||||
const shellMinDesignHeight = calcFillDesignHeight(PORTAL_LANDING_FIRST_SCREEN_HEIGHT, vh, scale);
|
||||
const navHeightPx = HOME_FIGMA_NAV_HEIGHT * scale;
|
||||
|
||||
return {
|
||||
enabled: true,
|
||||
scale,
|
||||
shellMinDesignHeight,
|
||||
navHeightPx,
|
||||
};
|
||||
}
|
||||
|
||||
/** 市场列表页:扣除顶栏与页脚后的可视区至少一屏 */
|
||||
export function calcMarketFigmaScale(viewportWidth, viewportHeight) {
|
||||
if (viewportWidth < HOME_FIGMA_SCALE_MIN_WIDTH) {
|
||||
return {
|
||||
enabled: false,
|
||||
scale: 1,
|
||||
shellMinDesignHeight: PORTAL_LANDING_FIRST_SCREEN_HEIGHT,
|
||||
navHeightPx: HOME_FIGMA_NAV_HEIGHT,
|
||||
};
|
||||
}
|
||||
|
||||
const scale = viewportWidth / HOME_FIGMA_DESIGN_WIDTH;
|
||||
const vh = viewportHeight || (typeof window !== 'undefined' ? window.innerHeight : 900);
|
||||
const navHeightPx = HOME_FIGMA_NAV_HEIGHT * scale;
|
||||
const contentAreaPx = Math.max(vh - navHeightPx - PORTAL_LAYOUT_FOOTER_HEIGHT, 320);
|
||||
const shellMinDesignHeight = calcFillDesignHeight(
|
||||
PORTAL_LANDING_FIRST_SCREEN_HEIGHT,
|
||||
contentAreaPx,
|
||||
scale,
|
||||
);
|
||||
|
||||
return {
|
||||
enabled: true,
|
||||
scale,
|
||||
shellMinDesignHeight,
|
||||
navHeightPx,
|
||||
};
|
||||
}
|
||||
|
||||
function clearPortalScaleModeClasses(root) {
|
||||
root.classList.remove('portal-landing-figma-scale-active');
|
||||
root.classList.remove('portal-market-figma-scale-active');
|
||||
}
|
||||
|
||||
function applySharedPortalScaleVars(root, result) {
|
||||
root.classList.add('portal-figma-scale-active');
|
||||
root.style.setProperty('--home-figma-scale', String(result.scale));
|
||||
root.style.setProperty('--portal-shell-min-design-height', `${result.shellMinDesignHeight}px`);
|
||||
root.style.setProperty('--page-nav-height', `${result.navHeightPx}px`);
|
||||
root.style.setProperty('--home-figma-nav-stage-margin-bottom', `${HOME_FIGMA_NAV_HEIGHT * (result.scale - 1)}px`);
|
||||
|
||||
root.style.removeProperty('--home-figma-hero-design-height');
|
||||
root.style.removeProperty('--home-figma-section-design-height');
|
||||
root.style.removeProperty('--home-figma-news-section-design-height');
|
||||
root.style.removeProperty('--home-figma-partner-section-design-height');
|
||||
root.style.removeProperty('--home-figma-cta-design-height');
|
||||
root.style.removeProperty('--home-section-min-h');
|
||||
root.style.removeProperty('--home-news-section-min-h');
|
||||
}
|
||||
|
||||
function applyLandingFigmaScaleToRoot(viewportWidth, viewportHeight) {
|
||||
const result = calcLandingFigmaScale(viewportWidth, viewportHeight);
|
||||
const root = document.documentElement;
|
||||
|
||||
if (!result.enabled) {
|
||||
clearPortalFigmaScaleFromRoot();
|
||||
return result;
|
||||
}
|
||||
|
||||
clearPortalScaleModeClasses(root);
|
||||
root.classList.add('portal-landing-figma-scale-active');
|
||||
applySharedPortalScaleVars(root, result);
|
||||
root.style.setProperty('--portal-landing-first-screen-height', `${result.shellMinDesignHeight}px`);
|
||||
root.style.removeProperty('--portal-market-shell-min-height');
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function applyMarketFigmaScaleToRoot(viewportWidth, viewportHeight) {
|
||||
const result = calcMarketFigmaScale(viewportWidth, viewportHeight);
|
||||
const root = document.documentElement;
|
||||
|
||||
if (!result.enabled) {
|
||||
clearPortalFigmaScaleFromRoot();
|
||||
return result;
|
||||
}
|
||||
|
||||
clearPortalScaleModeClasses(root);
|
||||
root.classList.add('portal-market-figma-scale-active');
|
||||
applySharedPortalScaleVars(root, result);
|
||||
root.style.setProperty('--portal-market-shell-min-height', `${result.shellMinDesignHeight}px`);
|
||||
root.style.setProperty(
|
||||
'--home-figma-visual-height',
|
||||
`${Math.ceil(result.shellMinDesignHeight * result.scale)}px`,
|
||||
);
|
||||
root.style.setProperty(
|
||||
'--home-figma-stage-margin-bottom',
|
||||
`${result.shellMinDesignHeight * (result.scale - 1)}px`,
|
||||
);
|
||||
root.style.removeProperty('--portal-landing-first-screen-height');
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/** 首页 / 落地 hub / 市场列表页 统一入口 */
|
||||
export function applyPortalFigmaScaleToRoot(viewportWidth, viewportHeight, routePath) {
|
||||
if (viewportWidth < HOME_FIGMA_SCALE_MIN_WIDTH || !isPortalFigmaScalePage(routePath)) {
|
||||
clearPortalFigmaScaleFromRoot();
|
||||
return { enabled: false };
|
||||
}
|
||||
|
||||
if (isHomeFigmaPage(routePath)) {
|
||||
clearPortalScaleModeClasses(document.documentElement);
|
||||
return applyHomeFigmaScaleToRoot(viewportWidth, viewportHeight);
|
||||
}
|
||||
|
||||
if (isPortalMarketPage(routePath)) {
|
||||
return applyMarketFigmaScaleToRoot(viewportWidth, viewportHeight);
|
||||
}
|
||||
|
||||
return applyLandingFigmaScaleToRoot(viewportWidth, viewportHeight);
|
||||
}
|
||||
|
||||
export function clearPortalFigmaScaleFromRoot() {
|
||||
const root = document.documentElement;
|
||||
clearPortalScaleModeClasses(root);
|
||||
root.style.removeProperty('--portal-landing-first-screen-height');
|
||||
root.style.removeProperty('--portal-market-shell-min-height');
|
||||
root.style.removeProperty('--portal-shell-min-design-height');
|
||||
clearHomeFigmaScaleFromRoot();
|
||||
}
|
||||
|
||||
export function syncPortalFigmaStageLayout(stageEl, scale) {
|
||||
return syncHomeFigmaStageLayout(stageEl, scale);
|
||||
}
|
||||
@ -1,5 +1,7 @@
|
||||
<template>
|
||||
<div class="fwsc-container fwsc-page portal-page-shell">
|
||||
<div class="fwsc-container fwsc-page portal-page-shell portal-market-figma-page">
|
||||
<div class="portal-figma-scale-viewport">
|
||||
<div class="portal-figma-scale-stage" ref="figmaStage">
|
||||
<!-- 面包屑导航 -->
|
||||
<!-- <BreadcrumbNav currentPage="碳服务市场" /> -->
|
||||
|
||||
@ -138,6 +140,8 @@
|
||||
:page-size-options="[10, 20, 30, 50]" @change="onPageChange" align="center" />
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 发布服务抽屉 -->
|
||||
<FwscPublish :visible.sync="publishVisible" @success="onPublishSuccess" />
|
||||
@ -178,9 +182,11 @@ import FwscPublish from './components/FwscPublish.vue';
|
||||
import api from '@/pages/index/api/fwsc/index.js';
|
||||
import { hasLogin } from '@/pages/index/api/login';
|
||||
import { scrollPortalContentToTop } from '@/pages/index/utils/portal-scroll-mode';
|
||||
import portalFigmaScaleMixin from '@/pages/index/utils/portal-figma-scale-mixin';
|
||||
|
||||
export default {
|
||||
name: 'FwscPage',
|
||||
mixins: [portalFigmaScaleMixin],
|
||||
components: {
|
||||
NewNav,
|
||||
BreadcrumbNav,
|
||||
@ -486,8 +492,11 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '../../styles/home-figma-variables.less';
|
||||
|
||||
.fwsc-container {
|
||||
background: #f5f5f5;
|
||||
.portal-figma-scale-page();
|
||||
}
|
||||
|
||||
.fwsc-main {
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
<template>
|
||||
<div class="fwsc-page portal-page-shell">
|
||||
<div class="fwsc-page portal-page-shell portal-landing-figma-page">
|
||||
<div class="portal-figma-scale-viewport">
|
||||
<div class="portal-figma-scale-stage" ref="figmaStage">
|
||||
<div class="main-content">
|
||||
<!-- 当前位置导航 -->
|
||||
<!-- <div class="breadcrumb-box">
|
||||
@ -88,18 +90,18 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NewNav from '@/pages/index/components/new-nav/index.vue';
|
||||
import portalFigmaScaleMixin from '@/pages/index/utils/portal-figma-scale-mixin';
|
||||
|
||||
export default {
|
||||
name: 'FwscIndex',
|
||||
components: {
|
||||
NewNav,
|
||||
},
|
||||
mixins: [portalFigmaScaleMixin],
|
||||
methods: {
|
||||
goHome() {
|
||||
this.$router.push('/view/mhzc/home');
|
||||
@ -119,61 +121,15 @@ export default {
|
||||
@import '../../styles/home-figma-variables.less';
|
||||
@import '../../styles/portal-landing-cards.less';
|
||||
.fwsc-page {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: #f6f7fa;
|
||||
.portal-figma-scale-page();
|
||||
}
|
||||
|
||||
.main-content {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
flex-direction: column;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
// 当前位置导航
|
||||
.breadcrumb-box {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 48px;
|
||||
padding: 0 var(--page-gutter-x);
|
||||
background: #fff;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
.breadcrumb-text {
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.breadcrumb-link {
|
||||
font-size: 14px;
|
||||
color: #009a29;
|
||||
cursor: pointer;
|
||||
transition: color 0.3s;
|
||||
}
|
||||
|
||||
.breadcrumb-link:hover {
|
||||
color: #007a1f;
|
||||
}
|
||||
|
||||
.breadcrumb-separator {
|
||||
margin: 0 8px;
|
||||
font-size: 14px;
|
||||
color: #999;
|
||||
}
|
||||
|
||||
.breadcrumb-current {
|
||||
font-size: 14px;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
// Banner 区 - 更大气的渐变背景
|
||||
// Banner 区 — 背景限定在 350px 标题区内
|
||||
.banner-section {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
// height: 400px;
|
||||
height: @portal-landing-banner-height;
|
||||
background: linear-gradient(135deg, #003B1A 0%, #009a29 40%, #00d87d 100%);
|
||||
align-items: center;
|
||||
@ -183,22 +139,18 @@ export default {
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
inset: 0;
|
||||
background: url('~@/pages/index/assets/home-top-bg1.jpg') center/cover no-repeat;
|
||||
// opacity: 0.15;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: @portal-landing-cards-overlap;
|
||||
background: linear-gradient(180deg, transparent, rgba(245, 247, 250, 0.8));
|
||||
background: linear-gradient(180deg, transparent, rgba(245, 247, 250, 0.85));
|
||||
}
|
||||
}
|
||||
|
||||
@ -232,11 +184,8 @@ export default {
|
||||
|
||||
// 四大服务入口(负 margin 与 Banner 底部衔接,移动端在断点内减弱避免压住标题区)
|
||||
.services-section {
|
||||
flex: 1 1 auto;
|
||||
padding: @portal-landing-cards-pt 0 @portal-landing-cards-pb;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
margin-top: -@portal-landing-cards-overlap;
|
||||
|
||||
.portal-landing-card-shell();
|
||||
}
|
||||
@ -360,16 +309,8 @@ export default {
|
||||
border-bottom-color: rgba(114, 46, 209, 0.2);
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
.services-section {
|
||||
padding: 40px 0 60px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.services-section {
|
||||
padding: 30px 0 50px;
|
||||
margin-top: -@portal-landing-cards-overlap-md;
|
||||
.portal-landing-card-shell-reset();
|
||||
}
|
||||
|
||||
@ -420,8 +361,8 @@ export default {
|
||||
}
|
||||
|
||||
.services-section {
|
||||
padding: 0 16px 40px;
|
||||
margin-top: -@portal-landing-cards-overlap-sm;
|
||||
padding-left: var(--page-gutter-x, 16px);
|
||||
padding-right: var(--page-gutter-x, 16px);
|
||||
.portal-landing-card-shell-reset();
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
<template>
|
||||
<div class="jrsc-page portal-page-shell">
|
||||
<div class="jrsc-page portal-page-shell portal-market-figma-page">
|
||||
<div class="portal-figma-scale-viewport">
|
||||
<div class="portal-figma-scale-stage" ref="figmaStage">
|
||||
<!-- 面包屑导航 -->
|
||||
<!-- <BreadcrumbNav currentPage="碳金融市场" /> -->
|
||||
|
||||
@ -192,6 +194,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- 产品详情弹窗 -->
|
||||
@ -326,9 +330,11 @@
|
||||
<script>
|
||||
import BreadcrumbNav from '@/pages/index/components/breadcrumb/index.vue';
|
||||
import api from '@/pages/index/api/fwsc/index.js';
|
||||
import portalFigmaScaleMixin from '@/pages/index/utils/portal-figma-scale-mixin';
|
||||
|
||||
export default {
|
||||
name: 'JrscPage',
|
||||
mixins: [portalFigmaScaleMixin],
|
||||
components: {
|
||||
BreadcrumbNav,
|
||||
},
|
||||
@ -601,6 +607,8 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
@import '../../styles/home-figma-variables.less';
|
||||
|
||||
// 变量定义
|
||||
@primary-color: #009a29;
|
||||
@primary-light: #4caf50;
|
||||
@ -616,6 +624,7 @@ export default {
|
||||
.jrsc-page {
|
||||
background: @bg-gray;
|
||||
animation: fadeIn 0.3s ease;
|
||||
.portal-figma-scale-page();
|
||||
}
|
||||
|
||||
@keyframes fadeIn {
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
<template>
|
||||
<div class="sjlbc-page portal-page-shell">
|
||||
<div class="sjlbc-page portal-page-shell portal-market-figma-page">
|
||||
<div class="portal-figma-scale-viewport">
|
||||
<div class="portal-figma-scale-stage" ref="figmaStage">
|
||||
<!-- 面包屑导航 -->
|
||||
<div class="breadcrumb-box">
|
||||
<span class="breadcrumb-link" @click="$router.push('/view/mhzc/home')">首页</span>
|
||||
@ -73,6 +75,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 联系方式弹窗 -->
|
||||
<t-dialog
|
||||
@ -109,9 +113,11 @@ import NewNav from '@/pages/index/components/new-nav/index.vue';
|
||||
import BreadcrumbNav from '@/pages/index/components/breadcrumb/index.vue';
|
||||
import gxzxApi from '@/pages/index/api/gxzx/index.js';
|
||||
import { isMobileViewport, watchDeviceClass } from '@/pages/index/utils/breakpoint';
|
||||
import portalFigmaScaleMixin from '@/pages/index/utils/portal-figma-scale-mixin';
|
||||
|
||||
export default {
|
||||
name: 'SjlbcPage',
|
||||
mixins: [portalFigmaScaleMixin],
|
||||
components: {
|
||||
NewNav,
|
||||
BreadcrumbNav,
|
||||
@ -303,8 +309,11 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '../../styles/home-figma-variables.less';
|
||||
|
||||
.sjlbc-page {
|
||||
background: #f5f5f5;
|
||||
.portal-figma-scale-page();
|
||||
}
|
||||
|
||||
// 面包屑导航
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="sjsc-page portal-page-shell">
|
||||
<div>
|
||||
<div class="sjsc-page portal-page-shell portal-market-figma-page">
|
||||
<div class="portal-figma-scale-viewport">
|
||||
<div class="portal-figma-scale-stage" ref="figmaStage">
|
||||
<!-- 面包屑导航 -->
|
||||
<!-- <BreadcrumbNav currentPage="碳数据市场" /> -->
|
||||
|
||||
@ -83,8 +84,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -92,9 +93,11 @@
|
||||
import NewNav from '@/pages/index/components/new-nav/index.vue';
|
||||
import BreadcrumbNav from '@/pages/index/components/breadcrumb/index.vue';
|
||||
import gxzxApi from '@/pages/index/api/gxzx/index.js';
|
||||
import portalFigmaScaleMixin from '@/pages/index/utils/portal-figma-scale-mixin';
|
||||
|
||||
export default {
|
||||
name: 'SjscPage',
|
||||
mixins: [portalFigmaScaleMixin],
|
||||
components: {
|
||||
NewNav,
|
||||
BreadcrumbNav,
|
||||
@ -194,12 +197,15 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '../../styles/home-figma-variables.less';
|
||||
|
||||
.sjsc-page {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: calc(100vh - 64px);
|
||||
background: #f5f5f5;
|
||||
justify-content: space-between;
|
||||
.portal-figma-scale-page();
|
||||
}
|
||||
|
||||
// 页面主体
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
<template>
|
||||
<div class="xqsc-container portal-page-shell">
|
||||
<div class="xqsc-container portal-page-shell portal-market-figma-page">
|
||||
<div class="portal-figma-scale-viewport">
|
||||
<div class="portal-figma-scale-stage" ref="figmaStage">
|
||||
<!-- 面包屑导航 -->
|
||||
<!-- <BreadcrumbNav currentPage="碳需求市场" /> -->
|
||||
|
||||
@ -142,6 +144,8 @@
|
||||
/>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 发布需求抽屉 -->
|
||||
<XqscPublish
|
||||
@ -207,9 +211,11 @@ import BreadcrumbNav from '@/pages/index/components/breadcrumb/index.vue';
|
||||
import XqscPublish from './components/XqscPublish.vue';
|
||||
import api from '@/pages/index/api/fwsc/index.js';
|
||||
import { scrollPortalContentToTop } from '@/pages/index/utils/portal-scroll-mode';
|
||||
import portalFigmaScaleMixin from '@/pages/index/utils/portal-figma-scale-mixin';
|
||||
|
||||
export default {
|
||||
name: 'XqscPage',
|
||||
mixins: [portalFigmaScaleMixin],
|
||||
components: {
|
||||
NewNav,
|
||||
BreadcrumbNav,
|
||||
@ -447,8 +453,11 @@ export default {
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '../../styles/home-figma-variables.less';
|
||||
|
||||
.xqsc-container {
|
||||
background: #f5f5f5;
|
||||
.portal-figma-scale-page();
|
||||
}
|
||||
|
||||
.xqsc-main {
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
<template>
|
||||
<div class="gxnlpt-page portal-page portal-page-shell">
|
||||
<div class="gxnlpt-page portal-page portal-page-shell portal-landing-figma-page">
|
||||
<div class="portal-figma-scale-viewport">
|
||||
<div class="portal-figma-scale-stage" ref="figmaStage">
|
||||
<div
|
||||
class="gxnlpt-shell page-content-wrap"
|
||||
:class="{ 'gxnlpt-shell--stacked': stackedNavLayout }"
|
||||
@ -230,6 +232,8 @@
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -242,6 +246,7 @@ import {
|
||||
showLoginGuide,
|
||||
} from '@/pages/index/utils/auth-guard';
|
||||
import { BP } from '@/pages/index/utils/breakpoint.js';
|
||||
import portalFigmaScaleMixin from '@/pages/index/utils/portal-figma-scale-mixin';
|
||||
|
||||
const starOutline = require('@/pages/index/assets/fwsc/wsc.svg');
|
||||
const starFilled = require('@/pages/index/assets/fwsc/ysc.svg');
|
||||
@ -257,7 +262,7 @@ function readStackedNavLayout() {
|
||||
}
|
||||
|
||||
/** 临时开启:优先展示分类假数据,接口就绪后改为 false */
|
||||
const FORCE_DEMO_PREVIEW = true;
|
||||
const FORCE_DEMO_PREVIEW = false;
|
||||
|
||||
/**
|
||||
* 演示:标签溢出省略 UI 测试(需与 FORCE_DEMO_PREVIEW 同时为 true)
|
||||
@ -386,6 +391,129 @@ const DEMO_BY_CATEGORY = {
|
||||
],
|
||||
};
|
||||
|
||||
/** 各分类标签池(来自演示数据,供接口数据补标签) */
|
||||
const CATEGORY_TAG_POOL = Object.keys(DEMO_BY_CATEGORY).reduce((pools, id) => {
|
||||
const set = new Set();
|
||||
(DEMO_BY_CATEGORY[id] || []).forEach((item) => {
|
||||
try {
|
||||
JSON.parse(item.bqjh).forEach((tag) => set.add(tag));
|
||||
} catch (e) {
|
||||
/* ignore */
|
||||
}
|
||||
});
|
||||
pools[id] = [...set];
|
||||
return pools;
|
||||
}, {});
|
||||
|
||||
/** 按标题/简介语义匹配标签(与演示卡片风格一致) */
|
||||
const CATEGORY_TAG_RULES = {
|
||||
'content-1': [
|
||||
{ test: /盘查|温室气体|组织碳|MRV/, tags: ['碳盘查', '组织碳', 'ISO14064'] },
|
||||
{ test: /足迹|LCA|PAS|14067/, tags: ['产品碳足迹', 'LCA', 'PAS2050'] },
|
||||
{ test: /CBAM|边境|欧盟|关税/, tags: ['CBAM', '欧盟碳关税', '出口合规'] },
|
||||
{ test: /园区|能碳|协同/, tags: ['园区碳管理', '能碳协同'] },
|
||||
{ test: /供应链|范围三|范围 3|填报/, tags: ['范围三', '供应链', '数据填报'] },
|
||||
{ test: /资产|年度/, tags: ['碳资产', '年度盘查', '全国'] },
|
||||
{ test: /监测|核算平台|在线/, tags: ['在线监测', '核算', '平台'] },
|
||||
{ test: /重点行业|指南/, tags: ['重点行业', '核算指南'] },
|
||||
],
|
||||
'content-2': [
|
||||
{ test: /核查|第三方/, tags: ['碳核查', '第三方核查', '重点排放单位'] },
|
||||
{ test: /CCER|造林|碳汇/, tags: ['CCER', '项目审定', '造林碳汇'] },
|
||||
{ test: /绿色.*认定|绿色项目/, tags: ['绿色认定', '全国'] },
|
||||
{ test: /碳中和|抵消/, tags: ['碳中和', '认证', '抵消'] },
|
||||
{ test: /自愿减排|验证/, tags: ['自愿减排', '验证', 'MRV'] },
|
||||
{ test: /零碳工厂|工厂评价/, tags: ['零碳工厂', '评价认证'] },
|
||||
{ test: /足迹.*认证|产品碳足迹/, tags: ['产品碳足迹', '认证'] },
|
||||
{ test: /供应链.*认证|绿色认证/, tags: ['供应链', '绿色认证'] },
|
||||
],
|
||||
'content-3': [
|
||||
{ test: /配额|全国碳/, tags: ['碳配额', '全国碳市场', '交易'] },
|
||||
{ test: /CCER|自愿减排|挂牌/, tags: ['CCER', '挂牌', '自愿减排'] },
|
||||
{ test: /回购/, tags: ['回购', '流动性', '碳金融'] },
|
||||
{ test: /试点|转让/, tags: ['试点市场', '配额转让'] },
|
||||
{ test: /托管|履约/, tags: ['托管', '碳资产', '履约'] },
|
||||
{ test: /VCS|国际|跨境/, tags: ['VCS', '国际碳信用', '跨境'] },
|
||||
{ test: /大宗|协议/, tags: ['大宗交易', '配额'] },
|
||||
{ test: /碳普惠|普惠/, tags: ['碳普惠', '交易'] },
|
||||
],
|
||||
'content-4': [
|
||||
{ test: /信贷|绿色信贷/, tags: ['绿色信贷', '融资', '转型金融'] },
|
||||
{ test: /质押|贷款/, tags: ['质押', '碳配额', '贷款'] },
|
||||
{ test: /保险|收益权/, tags: ['碳保险', '收益权', '风险'] },
|
||||
{ test: /基金|ESG|投资/, tags: ['碳基金', 'ESG', '投资'] },
|
||||
{ test: /债券|发行/, tags: ['绿色债券', '发行', '顾问'] },
|
||||
{ test: /回购融资/, tags: ['回购融资', '配额', '全国'] },
|
||||
{ test: /转型金融/, tags: ['转型金融', '贷款'] },
|
||||
{ test: /减排.*工具|支持工具/, tags: ['碳减排', '支持工具'] },
|
||||
],
|
||||
'content-5': [
|
||||
{ test: /达峰|路径/, tags: ['碳达峰', '路径规划', '咨询'] },
|
||||
{ test: /减排.*技术|技术评估/, tags: ['减排技术', '评估', '电力'] },
|
||||
{ test: /管理体系|ISO|培训/, tags: ['管理体系', 'ISO14067', '培训'] },
|
||||
{ test: /信息披露|CDP|ESG报告/, tags: ['信息披露', 'CDP', 'ESG报告'] },
|
||||
{ test: /林业碳汇|项目开发/, tags: ['林业碳汇', '项目开发', 'CCER'] },
|
||||
{ test: /零碳园区|综合能源/, tags: ['零碳园区', '规划', '综合能源'] },
|
||||
{ test: /政策|解读/, tags: ['政策解读', '碳市场'] },
|
||||
{ test: /ESG|议题/, tags: ['ESG', '碳议题', '咨询'] },
|
||||
],
|
||||
};
|
||||
|
||||
function hashText(str) {
|
||||
let h = 0;
|
||||
const s = String(str || '');
|
||||
for (let i = 0; i < s.length; i += 1) {
|
||||
h = (h * 31 + s.charCodeAt(i)) | 0;
|
||||
}
|
||||
return Math.abs(h);
|
||||
}
|
||||
|
||||
function scoreTagAgainstText(tag, text) {
|
||||
if (text.includes(tag)) return tag.length + 20;
|
||||
let score = 0;
|
||||
for (let len = Math.min(tag.length, 4); len >= 2; len -= 1) {
|
||||
for (let i = 0; i <= tag.length - len; i += 1) {
|
||||
const sub = tag.slice(i, i + len);
|
||||
if (text.includes(sub)) score += len;
|
||||
}
|
||||
}
|
||||
return score;
|
||||
}
|
||||
|
||||
/** 接口数据缺标签时,根据标题/简介推断 2~3 个展示标签 */
|
||||
function inferTagsFromContent(card, category) {
|
||||
const text = `${card.bt1 || ''}${card.fwnr || ''}${card.qymc || ''}`;
|
||||
const rules = CATEGORY_TAG_RULES[category.id] || [];
|
||||
for (let i = 0; i < rules.length; i += 1) {
|
||||
if (rules[i].test.test(text)) {
|
||||
return rules[i].tags.slice(0, 3);
|
||||
}
|
||||
}
|
||||
|
||||
const pool = CATEGORY_TAG_POOL[category.id] || [];
|
||||
const scored = pool
|
||||
.map((tag) => ({ tag, score: scoreTagAgainstText(tag, text) }))
|
||||
.filter((item) => item.score > 0)
|
||||
.sort((a, b) => b.score - a.score);
|
||||
if (scored.length >= 2) {
|
||||
return scored.slice(0, 3).map((item) => item.tag);
|
||||
}
|
||||
|
||||
const kwTags = (category.keywords || []).filter((kw) => text.includes(kw)).slice(0, 2);
|
||||
if (kwTags.length) {
|
||||
const extra = pool.find((tag) => !kwTags.includes(tag));
|
||||
return [...kwTags, extra].filter(Boolean).slice(0, 3);
|
||||
}
|
||||
|
||||
const seed = hashText(card.bt1 || text);
|
||||
const picked = [];
|
||||
for (let i = 0; i < pool.length && picked.length < 3; i += 1) {
|
||||
const tag = pool[(seed + i) % pool.length];
|
||||
if (tag && !picked.includes(tag)) picked.push(tag);
|
||||
}
|
||||
return picked;
|
||||
}
|
||||
|
||||
const SIDE_ICON_GRAY = {
|
||||
'thspt.svg': require('../../assets/gxnlpt/icons/01-carbon-accounting.svg'),
|
||||
'trzjg.svg': require('../../assets/gxnlpt/icons/02-carbon-certification.svg'),
|
||||
@ -431,6 +559,7 @@ const SUBMIT_FORM_EMPTY = () => ({
|
||||
|
||||
export default {
|
||||
name: 'GxnlptIndex',
|
||||
mixins: [portalFigmaScaleMixin],
|
||||
components: { GxnlptCardTags },
|
||||
data() {
|
||||
return {
|
||||
@ -654,9 +783,21 @@ export default {
|
||||
return this.attachTags(record);
|
||||
},
|
||||
ensureCardTags(card, category) {
|
||||
if (this.useDemoData) {
|
||||
if (card.tagList && card.tagList.length) return;
|
||||
card.tagList = [];
|
||||
card.fwlxbqList = [];
|
||||
return;
|
||||
}
|
||||
if (card.tagList && card.tagList.length) return;
|
||||
card.tagList = [];
|
||||
card.fwlxbqList = [];
|
||||
const inferred = inferTagsFromContent(card, category);
|
||||
if (!inferred.length) {
|
||||
card.tagList = [];
|
||||
card.fwlxbqList = [];
|
||||
return;
|
||||
}
|
||||
card.tagList = inferred;
|
||||
card.fwlxbqList = inferred;
|
||||
},
|
||||
matchCategory(record, category) {
|
||||
const text = `${record.bt1 || ''}${record.fwnr || ''}${record.fwlxjh || ''}${record.qymc || ''}`;
|
||||
@ -882,7 +1023,6 @@ export default {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
// 提交人信息由登录 token 在后端解析,前端不再传昵称/联系方式
|
||||
await api.gxfb({
|
||||
ywlxDm: '01',
|
||||
bt1: this.submitForm.bt1,
|
||||
@ -1008,6 +1148,7 @@ export default {
|
||||
font-family: @home-font-family;
|
||||
background: @gxnlpt-page-bg;
|
||||
box-sizing: border-box;
|
||||
.portal-figma-scale-page();
|
||||
}
|
||||
|
||||
.gxnlpt-shell.page-content-wrap {
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
<template>
|
||||
<div class="page-box portal-page">
|
||||
<div class="home-figma-scale-viewport">
|
||||
<div class="home-figma-scale-stage" ref="figmaStage">
|
||||
<!-- 主页面 -->
|
||||
<div class="container">
|
||||
<!-- 顶部背景轮播 -->
|
||||
@ -21,6 +23,7 @@
|
||||
</t-swiper>
|
||||
|
||||
<div class="home-shelf home-shelf--hero top-box-inner">
|
||||
<div class="home-hero-content">
|
||||
<div class="top-hero-head">
|
||||
<h1 class="top-title-text">可信碳信息网</h1>
|
||||
<p class="top-title-desc">
|
||||
@ -83,6 +86,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="top-box-bottom-over"> </div>
|
||||
</div>
|
||||
@ -304,11 +308,11 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 建立您的碳数字身份(Figma 150645:1019) -->
|
||||
<!-- CTA:独占一屏(Figma 150645:1019) -->
|
||||
<div class="bottom-box" id="section-bottom">
|
||||
<img
|
||||
class="bottom-box-bg"
|
||||
src="@/pages/index/assets/home-cta-group7-2x.png"
|
||||
:src="homeCtaBg"
|
||||
alt=""
|
||||
aria-hidden="true"
|
||||
/>
|
||||
@ -321,10 +325,11 @@
|
||||
></button>
|
||||
</div>
|
||||
|
||||
<!-- 底部信息区 -->
|
||||
<Footer style="width:100%" />
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@ -336,8 +341,12 @@ import hydtApi from '@/pages/index/api/hydt';
|
||||
import gxzxApi from '@/pages/index/api/gxzx/index.js';
|
||||
import searchApi from '@/pages/index/api/search.js';
|
||||
import { bindSectionWheelScroll } from '@/pages/index/utils/portal-scroll-mode';
|
||||
import { applyPortalFigmaScaleToRoot } from '@/pages/index/utils/portal-figma-scale';
|
||||
import { calcHomeFigmaScale } from '@/pages/index/utils/home-figma-scale';
|
||||
import portalFigmaScaleMixin from '@/pages/index/utils/portal-figma-scale-mixin';
|
||||
|
||||
export default {
|
||||
mixins: [portalFigmaScaleMixin],
|
||||
data() {
|
||||
return {
|
||||
inputValue: '',
|
||||
@ -360,6 +369,7 @@ export default {
|
||||
require('@/pages/index/views/home2/assets/home-bg-0.mp4'),
|
||||
require('@/pages/index/views/home2/assets/home-bg-1.mp4'),
|
||||
],
|
||||
homeCtaBg: require('@/pages/index/assets/Group 7.png'),
|
||||
capabilityList: [
|
||||
{ name: '碳核算平台', icon: require('@/pages/index/assets/home-thspt-icon.png'), anchor: 'content-1' },
|
||||
{ name: '碳交易平台', icon: require('@/pages/index/assets/home-tjypt-icon.png'), anchor: 'content-3' },
|
||||
@ -496,6 +506,9 @@ export default {
|
||||
this.syncBannerHeight();
|
||||
this.onViewportResize = () => {
|
||||
window.requestAnimationFrame(() => {
|
||||
if (window.innerWidth >= 768) {
|
||||
applyPortalFigmaScaleToRoot(window.innerWidth, this.getPortalViewportHeight(), this.$route.path);
|
||||
}
|
||||
this.syncBannerHeight();
|
||||
});
|
||||
};
|
||||
@ -508,6 +521,10 @@ export default {
|
||||
this.getTfwzxUrl();
|
||||
this.$nextTick(() => {
|
||||
this.scrollRoot = document.querySelector('.content-wrap');
|
||||
if (window.innerWidth >= 768) {
|
||||
applyPortalFigmaScaleToRoot(window.innerWidth, this.getPortalViewportHeight(), this.$route.path);
|
||||
}
|
||||
this.syncBannerHeight();
|
||||
if (this.scrollRoot) {
|
||||
this.unbindSectionWheel = bindSectionWheelScroll(this.scrollRoot, this.handleWheel);
|
||||
this.refreshSectionOffsets();
|
||||
@ -680,13 +697,17 @@ export default {
|
||||
},
|
||||
syncBannerHeight() {
|
||||
const viewportH = this.getPortalViewportHeight();
|
||||
if (window.innerWidth < 768) {
|
||||
const figma = calcHomeFigmaScale(window.innerWidth, viewportH);
|
||||
if (figma.enabled) {
|
||||
this.topBannerHeight = figma.heroDesignHeight;
|
||||
} else if (window.innerWidth < 768) {
|
||||
this.topBannerHeight = Math.round(640 + (window.innerWidth / 768) * 120);
|
||||
} else {
|
||||
// 始终以滚动容器高度为准,勿读 hero.offsetHeight(DevTools 关闭后会卡在旧高度)
|
||||
this.topBannerHeight = Math.max(Math.round(viewportH), 1);
|
||||
}
|
||||
this.$nextTick(() => {
|
||||
this.syncPortalFigmaStageLayout();
|
||||
this.refreshSectionOffsets();
|
||||
this.ensureBannerVideosPlay();
|
||||
});
|
||||
@ -850,7 +871,7 @@ export default {
|
||||
partnerRow4() {
|
||||
const row = this.partnerList.slice(12, 16);
|
||||
return [...row, ...row];
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
@ -866,6 +887,7 @@ export default {
|
||||
/* Figma 首页1920/1440:token 见 home-figma-variables.less */
|
||||
.portal-page {
|
||||
.home-portal-page-vars();
|
||||
.home-figma-scale-page();
|
||||
}
|
||||
|
||||
.nav-box {
|
||||
@ -1006,8 +1028,24 @@ export default {
|
||||
flex: 1;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
padding: var(--home-hero-pad-top) 0 var(--home-hero-pad-bottom);
|
||||
gap: @home-space-56;
|
||||
justify-content: flex-start;
|
||||
padding: var(--home-hero-pad-top) var(--home-section-px, 16px) var(--home-hero-pad-bottom);
|
||||
gap: 0;
|
||||
}
|
||||
|
||||
/* 标题 + 搜索 + 三卡一体:内部等比间距,整块贴首屏下方 */
|
||||
.home-hero-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 0 1 auto;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
max-width: @home-content-width;
|
||||
min-width: 0;
|
||||
margin-top: auto;
|
||||
margin-bottom: 0;
|
||||
gap: var(--home-hero-content-gap-fluid, clamp(24px, 4vh, @home-hero-content-gap));
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* 核心驱动及以下:左缘与导航「可」字对齐(--home-section-px) */
|
||||
@ -1097,14 +1135,15 @@ export default {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: @home-space-32;
|
||||
gap: clamp(20px, 3vh, @home-space-32);
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.top-title-text {
|
||||
margin: 0;
|
||||
font-family: @home-font-family;
|
||||
font-size: @home-font-size-56;
|
||||
font-size: clamp(32px, 3.89vw, @home-font-size-56);
|
||||
font-weight: @home-font-weight-semibold;
|
||||
line-height: 1.2;
|
||||
text-align: center;
|
||||
@ -1115,7 +1154,7 @@ export default {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
font-family: @home-font-family;
|
||||
font-size: @home-font-size-28;
|
||||
font-size: clamp(16px, 1.94vw, @home-font-size-28);
|
||||
font-weight: @home-font-weight-regular;
|
||||
line-height: @home-line-height-38;
|
||||
text-align: center;
|
||||
@ -1243,11 +1282,13 @@ export default {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
width: 100%;
|
||||
min-width: 0;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, minmax(0, 1fr));
|
||||
gap: @home-feature-cards-gap;
|
||||
gap: clamp(16px, 2.5vw, @home-feature-cards-gap);
|
||||
position: relative;
|
||||
z-index: 3;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.hero-card {
|
||||
@ -2082,9 +2123,11 @@ export default {
|
||||
|
||||
.news-tabs-main {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: flex-start;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 10px;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
@ -2763,7 +2806,7 @@ export default {
|
||||
}
|
||||
}
|
||||
|
||||
.bottom-box + :deep(footer) {
|
||||
.bottom-box + :deep(.portal-footer-shell) {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
@ -2785,11 +2828,16 @@ export default {
|
||||
|
||||
.portal-page .home-shelf--hero {
|
||||
justify-content: flex-start;
|
||||
gap: clamp(24px, 4vh, @home-space-56);
|
||||
gap: 0;
|
||||
}
|
||||
|
||||
.portal-page .home-hero-content {
|
||||
margin-top: auto;
|
||||
gap: clamp(24px, 4vh, @home-hero-content-gap);
|
||||
}
|
||||
|
||||
.portal-page .top-hero-actions {
|
||||
margin-top: auto;
|
||||
margin-top: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@ -2916,7 +2964,13 @@ export default {
|
||||
--home-hero-pad-top: calc(var(--page-offset-top, 56px) + 32px);
|
||||
--home-hero-pad-bottom: 40px;
|
||||
padding: var(--home-hero-pad-top) 16px var(--home-hero-pad-bottom);
|
||||
gap: 0;
|
||||
}
|
||||
|
||||
.portal-page .home-hero-content {
|
||||
margin-top: 0;
|
||||
gap: @home-space-32;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.top-hero-head {
|
||||
@ -3455,7 +3509,8 @@ export default {
|
||||
|
||||
.news-more {
|
||||
padding: 0;
|
||||
margin-left: 0;
|
||||
margin-left: auto;
|
||||
flex-shrink: 0;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
<template>
|
||||
<div class="hyzt-wrap portal-page-shell">
|
||||
<div class="hyzt-wrap portal-page-shell portal-landing-figma-page">
|
||||
<div class="portal-figma-scale-viewport">
|
||||
<div class="portal-figma-scale-stage" ref="figmaStage">
|
||||
<!-- Figma 150581:4101 banner-bg / 150679:365 hyzt_banner 1 -->
|
||||
<section class="banner-section" aria-label="行业专题">
|
||||
<div class="banner-bg" aria-hidden="true"></div>
|
||||
@ -34,14 +36,18 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from 'vuex';
|
||||
import portalFigmaScaleMixin from '@/pages/index/utils/portal-figma-scale-mixin';
|
||||
|
||||
export default {
|
||||
name: 'hyzt',
|
||||
mixins: [portalFigmaScaleMixin],
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
@ -71,21 +77,11 @@ export default {
|
||||
@import '../../styles/portal-landing-cards.less';
|
||||
|
||||
.hyzt-wrap {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: #f6f7fa;
|
||||
.portal-figma-scale-page();
|
||||
}
|
||||
|
||||
/* Figma 1440:版心 1300 居中(x:70) */
|
||||
.hyzt-page-inner {
|
||||
width: 100%;
|
||||
max-width: @hyzt-landing-content-width;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* Figma 150581:4101 banner-bg — 1280×350,背景 hyzt_banner 1280×548、top:-34 */
|
||||
/* Figma 150581:4101 banner-bg — 1280×350,背景仅在 Banner 区内(同企业出海) */
|
||||
.banner-section {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
@ -108,7 +104,6 @@ export default {
|
||||
background-size: cover;
|
||||
}
|
||||
|
||||
/* 与导航「可」字左缘对齐:使用 page-content-wrap(--page-gutter-x),勿用 1100 版心 + 60px */
|
||||
.banner-inner {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
@ -147,13 +142,19 @@ export default {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
/* Figma 1440:版心 1300 居中(x:70) */
|
||||
.hyzt-page-inner {
|
||||
width: 100%;
|
||||
max-width: @hyzt-landing-content-width;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/* Figma hyzt_content 150581:4199 — 与 Banner 重叠量同服务中心(120px) */
|
||||
.services-section {
|
||||
flex: 1 1 auto;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
margin-top: -@hyzt-landing-cards-overlap;
|
||||
padding: @hyzt-landing-cards-pt @hyzt-landing-cards-px @hyzt-landing-cards-pb;
|
||||
box-sizing: border-box;
|
||||
|
||||
.services-grid {
|
||||
@ -239,13 +240,9 @@ export default {
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
.services-section .services-grid {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.services-section {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 60px;
|
||||
--portal-service-card-min-height: auto;
|
||||
.portal-landing-card-shell-reset();
|
||||
}
|
||||
}
|
||||
|
||||
@ -254,13 +251,6 @@ export default {
|
||||
height: 280px;
|
||||
}
|
||||
|
||||
.services-section {
|
||||
margin-top: -@portal-landing-cards-overlap-md;
|
||||
padding-top: 40px;
|
||||
padding-bottom: 60px;
|
||||
.portal-landing-card-shell-reset();
|
||||
}
|
||||
|
||||
.services-section .services-grid {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 16px;
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
:class="[
|
||||
showPortalFooter ? 'portal-page-stack' : 'portal-route-outlet-wrap',
|
||||
isLandingHubPage && showPortalFooter ? 'portal-page-stack--landing-hub' : '',
|
||||
isMarketFigmaPage && showPortalFooter ? 'portal-page-stack--figma-market' : '',
|
||||
]"
|
||||
>
|
||||
<div class="portal-route-outlet">
|
||||
@ -24,6 +25,12 @@ import Nav from "@/pages/index/components/nav/index2.vue";
|
||||
import Footer from "@/pages/index/components/footer/index.vue";
|
||||
import { hasLogin } from "@/pages/index/api/login";
|
||||
import { isMobileViewport } from "@/pages/index/utils/breakpoint";
|
||||
import {
|
||||
applyPortalFigmaScaleToRoot,
|
||||
clearPortalFigmaScaleFromRoot,
|
||||
isPortalFigmaScalePage,
|
||||
isPortalMarketPage,
|
||||
} from "@/pages/index/utils/portal-figma-scale";
|
||||
|
||||
export default {
|
||||
name: "Main",
|
||||
@ -44,9 +51,16 @@ export default {
|
||||
$route() {
|
||||
// 切换路由时将内容容器滚动到顶部
|
||||
this.$refs.contentWrap && (this.$refs.contentWrap.scrollTop = 0);
|
||||
this.syncHomeFigmaScale();
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
isFigmaScalePage() {
|
||||
return isPortalFigmaScalePage(this.$route.path);
|
||||
},
|
||||
isMarketFigmaPage() {
|
||||
return isPortalMarketPage(this.$route.path);
|
||||
},
|
||||
isHomePage() {
|
||||
return (this.$route.path === '/home' || this.$route.path === '/') && !this.iframeUrl;
|
||||
},
|
||||
@ -63,6 +77,8 @@ export default {
|
||||
return {
|
||||
'content-wrap--mobile': this.isMobileViewport,
|
||||
'content-wrap--home': this.isHomePage,
|
||||
'content-wrap--figma-portal': this.isFigmaScalePage && !this.isHomePage && !this.isMarketFigmaPage,
|
||||
'content-wrap--figma-market': this.isMarketFigmaPage,
|
||||
'content-wrap--portal': !this.isHomePage && !this.isLoginPage,
|
||||
'content-wrap--landing-hub': this.isLandingHubPage,
|
||||
};
|
||||
@ -77,6 +93,7 @@ export default {
|
||||
marginTop: 'var(--page-offset-top)',
|
||||
height: 'calc(100dvh - var(--page-offset-top))',
|
||||
maxHeight: 'calc(100dvh - var(--page-offset-top))',
|
||||
'--portal-scroll-height': 'calc(100dvh - var(--page-offset-top))',
|
||||
};
|
||||
}
|
||||
if (this.isHomePage) {
|
||||
@ -86,6 +103,14 @@ export default {
|
||||
'--portal-viewport-height': `${this.documentClientHeight}px`,
|
||||
};
|
||||
}
|
||||
if (this.isFigmaScalePage) {
|
||||
return {
|
||||
height: `calc(${this.documentClientHeight}px - var(--page-offset-top))`,
|
||||
marginTop: 'var(--page-offset-top)',
|
||||
'--portal-scroll-height': `calc(${this.documentClientHeight}px - var(--page-offset-top))`,
|
||||
'--portal-viewport-height': `calc(${this.documentClientHeight}px - var(--page-offset-top))`,
|
||||
};
|
||||
}
|
||||
return {
|
||||
height: `calc(${this.documentClientHeight}px - var(--page-offset-top))`,
|
||||
marginTop: 'var(--page-offset-top)',
|
||||
@ -114,6 +139,7 @@ export default {
|
||||
mounted() {
|
||||
this.resetDocumentClientHeight();
|
||||
this.syncMobileViewport();
|
||||
this.syncHomeFigmaScale();
|
||||
window.addEventListener('resize', this.syncMobileViewport);
|
||||
if (typeof ResizeObserver !== 'undefined') {
|
||||
this._docResizeObserver = new ResizeObserver(() => {
|
||||
@ -125,6 +151,7 @@ export default {
|
||||
},
|
||||
beforeDestroy() {
|
||||
window.removeEventListener('resize', this.syncMobileViewport);
|
||||
clearPortalFigmaScaleFromRoot();
|
||||
if (this._onViewportResize) {
|
||||
window.removeEventListener('resize', this._onViewportResize);
|
||||
this._onViewportResize = null;
|
||||
@ -137,6 +164,18 @@ export default {
|
||||
methods: {
|
||||
syncMobileViewport() {
|
||||
this.isMobileViewport = isMobileViewport();
|
||||
this.syncHomeFigmaScale();
|
||||
},
|
||||
syncHomeFigmaScale() {
|
||||
if (this.isFigmaScalePage && !this.isMobileViewport && window.innerWidth >= 768) {
|
||||
const vh = this.isHomePage
|
||||
? (this.$refs.contentWrap?.clientHeight || this.documentClientHeight)
|
||||
: (this.$refs.contentWrap?.clientHeight
|
||||
|| (this.documentClientHeight - (parseFloat(getComputedStyle(document.documentElement).getPropertyValue('--page-nav-height')) || 64)));
|
||||
applyPortalFigmaScaleToRoot(window.innerWidth, vh, this.$route.path);
|
||||
return;
|
||||
}
|
||||
clearPortalFigmaScaleFromRoot();
|
||||
},
|
||||
gotoPage(name) {
|
||||
this.iframeUrl = "";
|
||||
|
||||
@ -1,5 +1,7 @@
|
||||
<template>
|
||||
<div class="compliance-portal portal-page-shell">
|
||||
<div class="compliance-portal portal-page-shell portal-landing-figma-page">
|
||||
<div class="portal-figma-scale-viewport">
|
||||
<div class="portal-figma-scale-stage" ref="figmaStage">
|
||||
<!-- 首屏:标题区 + 三大专题入口 -->
|
||||
<div id="section-landing" class="qych-snap-section qych-landing">
|
||||
<div class="banner-section">
|
||||
@ -264,15 +266,19 @@
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import serviceCardIcon1 from '../../assets/qych/service-card-icon-1.png'
|
||||
import serviceCardIcon2 from '../../assets/qych/service-card-icon-2.png'
|
||||
import portalFigmaScaleMixin from '@/pages/index/utils/portal-figma-scale-mixin';
|
||||
|
||||
export default {
|
||||
name: 'CompliancePortal',
|
||||
mixins: [portalFigmaScaleMixin],
|
||||
components: {},
|
||||
data() {
|
||||
return {
|
||||
@ -514,18 +520,14 @@ body {
|
||||
}
|
||||
|
||||
/* 全屏分页:高度对齐 main.vue 的 .content-wrap(非首页 = 100vh - 顶栏) */
|
||||
@qych-viewport-h: calc(100vh - var(--page-offset-top, 64px));
|
||||
@qych-viewport-h: var(--portal-scroll-height, calc(100vh - var(--page-offset-top, 64px)));
|
||||
|
||||
.qych-snap-section {
|
||||
min-height: @qych-viewport-h;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.qych-landing {
|
||||
min-height: @qych-viewport-h;
|
||||
background: #f6f7fa;
|
||||
overflow: hidden;
|
||||
}
|
||||
/* 首屏布局见 page-layout.less(.qych-landing) */
|
||||
|
||||
/* Figma 1440 画布:内容区宽 1300,左右各 70px 居中 */
|
||||
.qych-page-inner {
|
||||
@ -539,6 +541,7 @@ body {
|
||||
/* 主容器 */
|
||||
.compliance-portal {
|
||||
background-color: #f6f7fa;
|
||||
.portal-figma-scale-page();
|
||||
}
|
||||
|
||||
/* 首屏 Banner:Figma 150581:2709 — 1440×350,背景图 1440×371 */
|
||||
@ -622,12 +625,8 @@ body {
|
||||
.content {
|
||||
}
|
||||
|
||||
/* 专题入口:与服务中心首屏卡片区垂直位置一致(overlap 120 + pt 60) */
|
||||
/* 专题入口:卡片区样式;首屏布局与 padding 见 page-layout.less */
|
||||
.qych-landing .services-section {
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
margin-top: -@qych-landing-cards-overlap;
|
||||
padding: @qych-landing-cards-pt @qych-landing-cards-px @qych-landing-cards-pb;
|
||||
box-sizing: border-box;
|
||||
|
||||
.services-grid {
|
||||
@ -1377,13 +1376,13 @@ body {
|
||||
}
|
||||
|
||||
@media (max-width: 1200px) {
|
||||
.qych-landing .services-section .services-grid {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
.qych-snap-section.qych-landing {
|
||||
min-height: auto;
|
||||
}
|
||||
|
||||
.qych-landing .services-section {
|
||||
padding-top: 40px;
|
||||
padding-bottom: 60px;
|
||||
--portal-service-card-min-height: auto;
|
||||
.portal-landing-card-shell-reset();
|
||||
}
|
||||
|
||||
#anchor-container .banner.qych-snap-section .text-section-head-row {
|
||||
@ -1466,8 +1465,6 @@ body {
|
||||
}
|
||||
|
||||
.qych-landing .services-section {
|
||||
margin-top: -@portal-landing-cards-overlap-md;
|
||||
padding: 40px var(--page-gutter-x, 20px) 60px;
|
||||
.portal-landing-card-shell-reset();
|
||||
}
|
||||
|
||||
@ -1483,10 +1480,6 @@ body {
|
||||
padding-bottom: 16px;
|
||||
}
|
||||
|
||||
.qych-landing .services-section {
|
||||
padding: 24px var(--page-gutter-x, 16px) 40px;
|
||||
}
|
||||
|
||||
.qych-landing .services-section .service-card-inner {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
208
txw-mhzc/sql/gxnl_wzxx_import_from_excel.sql
Normal file
208
txw-mhzc/sql/gxnl_wzxx_import_from_excel.sql
Normal file
@ -0,0 +1,208 @@
|
||||
-- ============================================================
|
||||
-- 共性能力网站导航 Excel 导入数据
|
||||
-- 来源: 可信碳共性能力网站导航.xlsx
|
||||
-- 生成时间: 2026-05-28 22:37:10
|
||||
-- 记录数: 200
|
||||
-- ============================================================
|
||||
SET NAMES utf8mb4;
|
||||
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('c8eab7da04ec4901b855482ff86a2a9b', '国家温室气体排放因子数据库', 'https://data.ncsc.org.cn/factories/index', '产品碳足迹', '01', '碳核算平台', '产品碳足迹', '2', 'Y', 'import', '产品碳足迹', 999, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('146256ce75d34ed489075ab5b0b77d51', '钢铁全产业链EPD平台', 'https://www.cisa-epd.com/', '产品碳足迹', '01', '碳核算平台', '产品碳足迹', '2', 'Y', 'import', '产品碳足迹', 998, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('a4dfec212d39444888076127657c230f', '江苏省产品碳足迹公共服务平台', 'https://jstzj.fzggw.jiangsu.gov.cn/portal/home/index', '产品碳足迹', '01', '碳核算平台', '产品碳足迹', '2', 'Y', 'import', '产品碳足迹', 997, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('ffa7a74bc71148279f6a8181e8bc7eea', '浙江省产品碳足迹公共服务平台', 'https://ny.fzggw.zj.gov.cn/tzj/org/home/#/', '产品碳足迹', '01', '碳核算平台', '产品碳足迹', '2', 'Y', 'import', '产品碳足迹', 996, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('b15c06d609674fc983f1143fc6875061', '山东省企业产品碳足迹一站式服务平台', 'https://cfootprint.greendev.org.cn/user/login', '产品碳足迹', '01', '碳核算平台', '产品碳足迹', '2', 'Y', 'import', '产品碳足迹', 995, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('6ba555eaee104c7ab117010cbd775ed5', '上海市产品碳足迹背景数据库', 'https://www.shlcd.org.cn/admin/portal/home', '产品碳足迹', '01', '碳核算平台', '产品碳足迹', '2', 'Y', 'import', '产品碳足迹', 994, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('d8f212b0bb254a089c355b77762f4b20', '湖北省产品碳足迹公共服务平台', 'https://hbcfp.hbets.com.cn/sso/#/home', '产品碳足迹', '01', '碳核算平台', '产品碳足迹', '2', 'Y', 'import', '产品碳足迹', 993, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('38938f4f878949d0826d0a4e189a6b5d', '粤港澳大湾区碳足迹标识认证公共服务平台', 'https://www.smq.com.cn/gbalca/gateway/#/index', '产品碳足迹', '01', '碳核算平台', '产品碳足迹', '2', 'Y', 'import', '产品碳足迹', 992, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('b9590eb3d3a5436a884e2587d9aa784e', '电力行业产品碳足迹与环境产品声明平台', 'https://cfp-epd.cec.org.cn/carbon/#/', '产品碳足迹', '01', '碳核算平台', '产品碳足迹', '2', 'Y', 'import', '产品碳足迹', 991, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('be0f5f06843249a79aeea6f7b16abbe5', '中国原材料工业产品碳足迹基础数据库', 'http://3060service.com/prod/proddoor/carbon/index', '产品碳足迹', '01', '碳核算平台', '产品碳足迹', '2', 'Y', 'import', '产品碳足迹', 990, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('15475b2c9c514afe9c5b987a1daf78d8', '中国交通运输碳足迹公示平台', 'http://transcarbon.cn/', '产品碳足迹', '01', '碳核算平台', '产品碳足迹', '2', 'Y', 'import', '产品碳足迹', 989, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('64db9232e60f4bbbbb1e8a9e3a55cc34', '中国汽车产业链碳公示平台', 'https://www.auto-cpp.com/', '产品碳足迹', '01', '碳核算平台', '产品碳足迹', '2', 'Y', 'import', '产品碳足迹', 988, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('1c6eea304e144a32b93c38b56cbd1e7d', '锂电池碳足迹背景数据库', 'https://www.ldchy.cn/#/', '产品碳足迹', '01', '碳核算平台', '产品碳足迹', '2', 'Y', 'import', '产品碳足迹', 987, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('61a4be40365b4004aa491fbd4d1b6638', '京碳惠:新一代物流碳足迹管理系统', 'https://bv.jdl.com/', '企业碳管理平台', '01', '碳核算平台', '企业碳管理平台', '2', 'Y', 'import', '企业碳管理平台', 986, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('44d3b99a2db142ada6b607a828894ac9', '欧冶绿色低碳供应链公共服务平台', 'https://www.greenscs.com/', '企业碳管理平台', '01', '碳核算平台', '企业碳管理平台', '2', 'Y', 'import', '企业碳管理平台', 985, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('834114c5ebee467db80605617f95c94c', '晓数绿景', 'https://www.enemind.com/index.html', '企业碳管理平台', '01', '碳核算平台', '企业碳管理平台', '2', 'Y', 'import', '企业碳管理平台', 984, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('515955b1202943eaa34662c5c2818b41', '欧冶CBAM辅助核算系统', 'https://www.ouyeel.com/cbam/login', 'CBAM', '01', '碳核算平台', 'CBAM', '2', 'Y', 'import', 'CBAM', 983, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('0867c4cc7158437c8cc2f5a6f8e60244', '欧盟碳边界调节机制(CBAM)填报系统', 'https://cbamcf.com/login?redirect=/', 'CBAM', '01', '碳核算平台', 'CBAM', '2', 'Y', 'import', 'CBAM', 982, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('5d2b2b1df54541d7968382891e2ac0a7', 'CBAM欧盟碳关税-欧盟碳关税政策-CBAM服务平台-擎天全税通', 'https://www.chinackts.com/products/cbam.html', 'CBAM', '01', '碳核算平台', 'CBAM', '2', 'Y', 'import', 'CBAM', 981, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('f677b1c367da4b70b4e5ccf5340ab8b5', '中国国家生态环境部', 'https://www.mee.gov.cn/', '生态环境、双碳政策、监管', '01', '碳核算平台', '国家部委,生态环境,双碳政策,监管', '2', 'Y', 'import', '国家部委', 980, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('01fd5edd8266402fad0567f4706b4e0e', '中国国家发展和改革委员会', 'https://www.ndrc.gov.cn/', '发展改革、碳达峰、碳中和', '01', '碳核算平台', '国家部委,发展改革,碳达峰,碳中和', '2', 'Y', 'import', '国家部委', 979, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('dcf538836c784409b7a79767efcad356', '中国国家工信部', 'https://www.miit.gov.cn/', '工业节能、绿色制造', '01', '碳核算平台', '国家部委,工业节能,绿色制造', '2', 'Y', 'import', '国家部委', 978, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('3a6f03113fb74075ac530200bfb0827d', '中国国家能源局', 'https://www.nea.gov.cn/', '能源、可再生能源、能耗管控', '01', '碳核算平台', '国家部委,能源,可再生能源,能耗管控', '2', 'Y', 'import', '国家部委', 977, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('1f043181b8314b75893c2e09781d505f', '国家标准化管理委员会', 'https://www.sac.gov.cn/', '碳标准、低碳标准', '01', '碳核算平台', '国家部委,碳标准,低碳标准', '2', 'Y', 'import', '国家部委', 976, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('c4a7902f2ae649b191ae91b0ffef3915', 'VCS官网(VERRA)', 'https://verra.org/', '国际核证减排、VCS、碳信用', '02', '碳认证机构', '国际碳标准/绿证,国际核证减排,VCS,碳信用', '2', 'Y', 'import', '国际碳标准/绿证', 975, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('c83fb598e50c4a65ad174ccc3b467d4d', '国际绿证I-REC官网', 'https://www.irecstandard.org/', '绿证、可再生能源、国际绿电', '02', '碳认证机构', '国际碳标准/绿证,绿证,可再生能源,国际绿电', '2', 'Y', 'import', '国际碳标准/绿证', 974, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('6d42d04ceefa4e15a53521a96d065437', 'CDM官网', 'https://cdm.unfccc.int/', '清洁发展机制、方法学', '02', '碳认证机构', '国际碳标准/绿证,清洁发展机制,方法学', '2', 'Y', 'import', '国际碳标准/绿证', 973, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('d48671e1867f4e0e8c21359477ce8ed1', 'GCC官网(GLOBAL CARBON COUNCIL)', 'https://globalcarboncouncil.org/', '碳标准、方法学、项目模板', '02', '碳认证机构', '国际碳标准/绿证,碳标准,方法学,项目模板', '2', 'Y', 'import', '国际碳标准/绿证', 972, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('9590ab711590425aaeb84a6ed2a5648b', '中国碳核算数据库(CEADs)', 'https://www.ceads.net/', '碳核算、能源排放、清单数据', '01', '碳核算平台', '碳核算/排放数据,碳核算,能源排放,清单数据', '2', 'Y', 'import', '碳核算/排放数据', 971, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('96eee5d9523c4cb7a43c3fe68fbf50e1', '中国多尺度排放清单模型(MEIC)', 'http://meicmodel.org/', '排放清单、高分辨率碳排放', '01', '碳核算平台', '碳核算/排放数据,排放清单,高分辨率碳排放', '2', 'Y', 'import', '碳核算/排放数据', 970, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('fd61c503f3db46e1ab20e912872c9039', '欧盟排放因子库(EFDB)', 'https://efdb.ipcc.ch/', '排放因子、IPCC、国际核算', '01', '碳核算平台', '碳核算/排放数据,排放因子,IPCC,国际核算', '2', 'Y', 'import', '碳核算/排放数据', 969, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('57643b89af7541da86e53b1d05c47ac8', '中国产品全生命周期温室气体排放系数库', 'https://lca.cityghg.com/', '碳足迹、排放系数、全生命周期', '01', '碳核算平台', '碳核算/排放数据,碳足迹,排放系数,全生命周期', '2', 'Y', 'import', '碳核算/排放数据', 968, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('954bfb792bf04bb8b4377f06073494fb', '国际能源署(IEA)', 'https://www.iea.org/', '国际能源、碳排放、能效', '05', '碳技术咨询', '国际能源/环保机构,国际能源,碳排放,能效', '2', 'Y', 'import', '国际能源/环保机构', 967, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('a43946a32fde4f7080ad9ccee8bccbe9', '美国环境保护署(EPA)', 'https://www.epa.gov/', '排放因子、污染物核算', '05', '碳技术咨询', '国际能源/环保机构,排放因子,污染物核算', '2', 'Y', 'import', '国际能源/环保机构', 966, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('7d22f38cedd94d36b423e612cf4ab00d', '全球可再生能源交易工具APX Tigrs', 'https://www.apx.com/', '全球可再生能源交易、碳工具', '05', '碳技术咨询', '国际能源/环保机构,全球可再生能源交易,碳工具', '2', 'Y', 'import', '国际能源/环保机构', 965, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('9df12df0a85e481c8f387f015cc7b193', '欧盟委员会', 'https://ec.europa.eu/', '欧盟碳市场、绿色新政', '05', '碳技术咨询', '国际能源/环保机构,欧盟碳市场,绿色新政', '2', 'Y', 'import', '国际能源/环保机构', 964, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('1fa60328b7144751a437dffeacac311c', 'GRI标准', 'https://www.globalreporting.org/', 'ESG、可持续披露、碳信息披露', '02', '碳认证机构', '行业标准/倡议,ESG,可持续披露,碳信息披露', '2', 'Y', 'import', '行业标准/倡议', 963, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('4c5ee2c6642a4da7a7f76ada75d7591c', '科学碳目标(SBTi)', 'https://sciencebasedtargets.org/', '科学减排、企业碳目标', '02', '碳认证机构', '行业标准/倡议,科学减排,企业碳目标', '2', 'Y', 'import', '行业标准/倡议', 962, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('66e1d16590cb4907918dd415d9f126e9', '汽车碳足迹公示平台', 'https://www.catf.org.cn/', '汽车、碳足迹、公示', '02', '碳认证机构', '行业标准/倡议,汽车,碳足迹,公示', '2', 'Y', 'import', '行业标准/倡议', 961, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('d2f060701c9640a58327c96c701b7236', '二氧化碳捕集与封存技术国家地方联合工程研究中心', 'https://ccs.xjtu.edu.cn/', 'CCS、碳捕集、碳封存', '01', '碳核算平台', '科研平台,CCS,碳捕集,碳封存', '2', 'Y', 'import', '科研平台', 960, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('02a53e53006540be96828c8b4579bb06', '中国科学院', 'https://www.cas.cn/', '科研、双碳、气候变化', '01', '碳核算平台', '科研平台,科研,双碳,气候变化', '2', 'Y', 'import', '科研平台', 959, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('aefb81433f044963b77c26b131a261dd', '生态环境部环境与经济政策研究中心', 'https://www.eprc.org.cn/', '政策研究、低碳、宏观决策', '01', '碳核算平台', '科研平台,政策研究,低碳,宏观决策', '2', 'Y', 'import', '科研平台', 958, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('50e2b618ff0c4f4da64a63c95fb103e8', '中国科学院广州能源研究所', 'https://www.giec.cas.cn/', '新能源、可再生能源、低碳', '01', '碳核算平台', '科研平台,新能源,可再生能源,低碳', '2', 'Y', 'import', '科研平台', 957, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('f63f10806c8443bc998c927555afafa3', '江西省科学院能源研究所', 'https://www.jxas.ac.cn/', '能源、环保、低碳研究', '01', '碳核算平台', '科研平台,能源,环保,低碳研究', '2', 'Y', 'import', '科研平台', 956, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('29e8e96d583e4b1face96513f6efcc2c', '中国科学院气候变化研究中心', 'https://ccrc.cas.cn/', '气候变化、碳减排、科研', '01', '碳核算平台', '科研平台,气候变化,碳减排,科研', '2', 'Y', 'import', '科研平台', 955, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('3f515b4c2aee45999508b56ac13e093e', '公众环境研究中心IPE', 'https://www.ipe.org.cn/', '环境信息、碳披露、绿色金融', '01', '碳核算平台', '科研平台,环境信息,碳披露,绿色金融', '2', 'Y', 'import', '科研平台', 954, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('6cbebb6bd0d34e60b044d05017033f8f', '世界资源研究所(WRI)', 'https://www.wri.org/', '全球智库、环境发展、低碳', '01', '碳核算平台', '科研平台,全球智库,环境发展,低碳', '2', 'Y', 'import', '科研平台', 953, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('24cda262da854f5e9edb8a0393f47197', '北京低碳清洁能源研究院', 'https://www.bjcleanenergy.org/', '低碳、清洁能源、煤炭清洁', '01', '碳核算平台', '科研平台,低碳,清洁能源,煤炭清洁', '2', 'Y', 'import', '科研平台', 952, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('23d5ca78d6cb43afbbce9add22744e6b', '中央财经大学绿色金融国际研究院', 'https://iigf.cufe.edu.cn/', '绿色金融、碳金融、低碳', '01', '碳核算平台', '科研平台,绿色金融,碳金融,低碳', '2', 'Y', 'import', '科研平台', 951, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('8896d603f7d0453484a82c8cff0d55c2', '清华大学气候变化和可持续发展研究院', 'https://www.tsinghua.edu.cn/', '气候政策、双碳路径、智库', '01', '碳核算平台', '科研平台,气候政策,双碳路径,智库', '2', 'Y', 'import', '科研平台', 950, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('fab7bb2884874b48823124809478e9f6', '北京大学能源研究院', 'https://www.energy.pku.edu.cn/', '能源转型、低碳、科研', '01', '碳核算平台', '科研平台,能源转型,低碳,科研', '2', 'Y', 'import', '科研平台', 949, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('a9afeda7e2584c829528c0cce1973b85', '中国储能网', 'https://www.escn.com.cn/', '储能、可再生能源、节能减碳', '05', '碳技术咨询', '行业协会/平台,储能,可再生能源,节能减碳', '2', 'Y', 'import', '行业协会/平台', 948, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('9f86491487f8413ebb0314177c8a8f35', '中国产业发展促进会-生物质能产业分会', 'https://www.beipa.org.cn/', '生物质能、低碳、可再生能源', '05', '碳技术咨询', '行业协会/平台,生物质能,低碳,可再生能源', '2', 'Y', 'import', '行业协会/平台', 947, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('f6f4f0e5ff2a4ef79752b40afb00c3c1', '中国节能协会', 'https://www.cecaweb.org.cn/', '节能、减碳、低碳服务', '05', '碳技术咨询', '行业协会/平台,节能,减碳,低碳服务', '2', 'Y', 'import', '行业协会/平台', 946, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('5ddae033da0548c887aa71fba265c44e', '中国可再生能源学会', 'https://www.cres.org.cn/', '可再生能源、碳减排、技术支持', '05', '碳技术咨询', '行业协会/平台,可再生能源,碳减排,技术支持', '2', 'Y', 'import', '行业协会/平台', 945, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('834768b70cfa4e7c9be2f27b816a307f', '中国清洁发展机制基金', 'https://www.cdmfund.org/', '气候基金、绿色低碳、政策性基金', '05', '碳技术咨询', '行业协会/平台,气候基金,绿色低碳,政策性基金', '2', 'Y', 'import', '行业协会/平台', 944, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('4b86ca51e6ab4eee97e0dfa3c1641af5', '中国工业节能与清洁生产协会', 'https://www.cieccpa.org.cn/', '工业节能、清洁生产、绿色制造、低碳', '05', '碳技术咨询', '行业协会/平台,工业节能,清洁生产,绿色制造,低碳', '2', 'Y', 'import', '行业协会/平台', 943, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('d9ad273330534b359be4392f43667f98', '中国环境保护产业协会', 'https://www.caepi.org.cn/', '环保产业、低碳、节能', '05', '碳技术咨询', '行业协会/平台,环保产业,低碳,节能', '2', 'Y', 'import', '行业协会/平台', 942, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('29deaa80406f4bab9cbd7537e7819aef', '国家节能中心', 'https://www.nesc.org.cn/', '节能管理、降碳、能效', '05', '碳技术咨询', '行业协会/平台,节能管理,降碳,能效', '2', 'Y', 'import', '行业协会/平台', 941, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('694d00f2ca5a4374a3a42e22fa2bb926', '中国煤炭学会', 'https://www.chinacs.org.cn/', '煤炭清洁利用、碳减排', '05', '碳技术咨询', '行业协会/平台,煤炭清洁利用,碳减排', '2', 'Y', 'import', '行业协会/平台', 940, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('469eca00bab94d2caf4dd2a5c66d2020', '中国煤炭工业协会', 'https://www.coalchina.org.cn/', '煤炭行业、绿色低碳、可持续发展', '05', '碳技术咨询', '行业协会/平台,煤炭行业,绿色低碳,可持续发展', '2', 'Y', 'import', '行业协会/平台', 939, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('a2e12f83b91e4942a7709029e3b604cd', '生态环境部环境规划院', 'https://www.caep.org.cn/', '环境规划、低碳政策、双碳研究', '05', '碳技术咨询', '行业协会/平台,环境规划,低碳政策,双碳研究', '2', 'Y', 'import', '行业协会/平台', 938, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('91cb5292989b45d0a21988018df29534', '宁夏清洁发展机制环保服务中心', 'https://www.cdmcenter.com.cn/', 'CDM、碳资产开发、节能低碳', '05', '碳技术咨询', '行业协会/平台,CDM,碳资产开发,节能低碳', '2', 'Y', 'import', '行业协会/平台', 937, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('3c8c753812ae4458b453d06601e24944', '中国节能网', 'https://www.ces.cn/', '节能、低碳、综合解决方案', '05', '碳技术咨询', '行业协会/平台,节能,低碳,综合解决方案', '2', 'Y', 'import', '行业协会/平台', 936, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('c01b4ec359d441549683799380b02386', '中国节能减排网', 'https://www.jienengjianpai.com/', '节能减排、政策、技术', '05', '碳技术咨询', '行业协会/平台,节能减排,政策,技术', '2', 'Y', 'import', '行业协会/平台', 935, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('f088923afde4488a9c0767d818201280', '中国能源网', 'https://www.cnenergy.com/', '能源资讯、低碳、节能', '05', '碳技术咨询', '行业协会/平台,能源资讯,低碳,节能', '2', 'Y', 'import', '行业协会/平台', 934, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('a323b4ae1ca5499fb4a25252ea21da39', '山东省发展和改革委员会', 'https://fgw.shandong.gov.cn/', '地方发改、低碳、双碳落地', '01', '碳核算平台', '地方发改部门,地方发改,低碳,双碳落地', '2', 'Y', 'import', '地方发改部门', 933, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('7dd2c89169914180a2b607c514e48eb6', '安徽省发展和改革委员会', 'https://fzggw.ah.gov.cn/', '地方发改、低碳政策', '01', '碳核算平台', '地方发改部门,地方发改,低碳政策', '2', 'Y', 'import', '地方发改部门', 932, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('3bf75b6b0a90433a96f44b81ba7e4392', '河北省发展和改革委员会', 'https://fzggw.hebei.gov.cn/', '地方发改、绿色低碳', '01', '碳核算平台', '地方发改部门,地方发改,绿色低碳', '2', 'Y', 'import', '地方发改部门', 931, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('3f56fc53567344e493159f8667c7af27', '江苏省发展和改革委员会', 'https://fzggw.jiangsu.gov.cn/', '地方发改、双碳、能效', '01', '碳核算平台', '地方发改部门,地方发改,双碳,能效', '2', 'Y', 'import', '地方发改部门', 930, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('57b00d9a70f34eb0ac26d436b88a07db', '辽宁省发展和改革委员会', 'https://fgw.ln.gov.cn/', '地方发改、低碳转型', '01', '碳核算平台', '地方发改部门,地方发改,低碳转型', '2', 'Y', 'import', '地方发改部门', 929, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('1635376e99d04381b258757f6925f6bd', '江西省发展和改革委员会', 'https://dpc.jiangxi.gov.cn/', '地方发改、节能减碳', '01', '碳核算平台', '地方发改部门,地方发改,节能减碳', '2', 'Y', 'import', '地方发改部门', 928, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('a35136f77f9c4d9f86543b76e1c36e9a', '贵州省发展和改革委员会', 'https://fzggw.guizhou.gov.cn/', '地方发改、绿色发展', '01', '碳核算平台', '地方发改部门,地方发改,绿色发展', '2', 'Y', 'import', '地方发改部门', 927, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('bb8559f802ee4b7b9838eb2e94d435b0', '福建省发展和改革委员会', 'https://fgw.fujian.gov.cn/', '地方发改、低碳、新能源', '01', '碳核算平台', '地方发改部门,地方发改,低碳,新能源', '2', 'Y', 'import', '地方发改部门', 926, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('0aeba056b907447e8ff95902a1f95022', '海南省发展和改革委员会', 'https://plan.hainan.gov.cn/', '地方发改、生态低碳', '01', '碳核算平台', '地方发改部门,地方发改,生态低碳', '2', 'Y', 'import', '地方发改部门', 925, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('4e77b7af8e8b44c881cd11dc652a9f54', '青海省发展和改革委员会', 'https://fgw.qinghai.gov.cn/', '地方发改、清洁能源、低碳', '01', '碳核算平台', '地方发改部门,地方发改,清洁能源,低碳', '2', 'Y', 'import', '地方发改部门', 924, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('0b9ef8e3e5ee4ed8867c5acea73950f2', '河南省发展和改革委员会', 'https://fgw.henan.gov.cn/', '地方发改、双碳、节能', '01', '碳核算平台', '地方发改部门,地方发改,双碳,节能', '2', 'Y', 'import', '地方发改部门', 923, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('8898bc3605524d63acaec56b4ef325d3', '黑龙江省发展和改革委员会', 'https://fgw.hlj.gov.cn/', '地方发改、绿色低碳', '01', '碳核算平台', '地方发改部门,地方发改,绿色低碳', '2', 'Y', 'import', '地方发改部门', 922, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('cbd6aec2b02f459bb5dbe8644f835e9b', '云南省发展和改革委员会', 'https://fzggw.yn.gov.cn/', '地方发改、生态碳汇、低碳', '01', '碳核算平台', '地方发改部门,地方发改,生态碳汇,低碳', '2', 'Y', 'import', '地方发改部门', 921, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('b2e13fe081694ff4bb2e47b7db695992', '陕西省发展和改革委员会', 'https://fzggw.shaanxi.gov.cn/', '地方发改、节能降碳', '01', '碳核算平台', '地方发改部门,地方发改,节能降碳', '2', 'Y', 'import', '地方发改部门', 920, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('347cda71eeba493a86ec33c93ca282f9', '甘肃省发展和改革委员会', 'https://fzggw.gansu.gov.cn/', '地方发改、绿色低碳', '01', '碳核算平台', '地方发改部门,地方发改,绿色低碳', '2', 'Y', 'import', '地方发改部门', 919, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('87c3010736fc41639d1176dc0102b1bb', '四川省发展和改革委员会', 'https://fzggw.sc.gov.cn/', '地方发改、双碳、生态低碳', '01', '碳核算平台', '地方发改部门,地方发改,双碳,生态低碳', '2', 'Y', 'import', '地方发改部门', 918, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('493245a14be14e18b9d5979574dd3eac', '浙江省发展和改革委员会', 'https://fzggw.zj.gov.cn/', '地方发改、绿色低碳、能效', '01', '碳核算平台', '地方发改部门,地方发改,绿色低碳,能效', '2', 'Y', 'import', '地方发改部门', 917, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('ec7fac70d4a14530be2c1a36c1c9af9a', '湖南省发展和改革委员会', 'https://fzggw.hunan.gov.cn/', '地方发改、低碳转型', '01', '碳核算平台', '地方发改部门,地方发改,低碳转型', '2', 'Y', 'import', '地方发改部门', 916, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('01ce5fec52d74eff9abbff2ef34111ef', '湖北省发展和改革委员会', 'https://fzggw.hubei.gov.cn/', '地方发改、碳市场、节能', '01', '碳核算平台', '地方发改部门,地方发改,碳市场,节能', '2', 'Y', 'import', '地方发改部门', 915, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('e8277b859da544739fce7d9e8ba7c38e', '山西省发展和改革委员会', 'https://fzggw.shanxi.gov.cn/', '地方发改、煤炭低碳、节能', '01', '碳核算平台', '地方发改部门,地方发改,煤炭低碳,节能', '2', 'Y', 'import', '地方发改部门', 914, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('78df2386c21940a0b1cb9bbc2ee21223', '新疆维吾尔族自治区发展和改革委员会', 'https://fzggw.xinjiang.gov.cn/', '地方发改、清洁能源、低碳', '01', '碳核算平台', '地方发改部门,地方发改,清洁能源,低碳', '2', 'Y', 'import', '地方发改部门', 913, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('bfb5936f21b04b3ba7a6a12b2fdfe789', '广西壮族自治区发展和改革委员会', 'https://fzggw.gxzf.gov.cn/', '地方发改、生态低碳', '01', '碳核算平台', '地方发改部门,地方发改,生态低碳', '2', 'Y', 'import', '地方发改部门', 912, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('c20141d40b9f47e680eedd9a124559c7', '宁夏回族自治区发展和改革委员会', 'https://fzggw.nx.gov.cn/', '地方发改、节能、低碳', '01', '碳核算平台', '地方发改部门,地方发改,节能,低碳', '2', 'Y', 'import', '地方发改部门', 911, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('4b0c013ca6e541919490fa29201fa1e5', '内蒙古自治区发展和改革委员会', 'https://fzggw.nmg.gov.cn/', '地方发改、能源低碳、节能', '01', '碳核算平台', '地方发改部门,地方发改,能源低碳,节能', '2', 'Y', 'import', '地方发改部门', 910, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('cbd1f6dab252462b904e87f95eb26e52', '西藏自治区发展和改革委员会', 'https://fzggw.xizang.gov.cn/', '地方发改、生态碳汇、低碳', '01', '碳核算平台', '地方发改部门,地方发改,生态碳汇,低碳', '2', 'Y', 'import', '地方发改部门', 909, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('c61b9d87b6964e0887ebe4772b898f02', '北京发展和改革委员会', 'https://fgw.beijing.gov.cn/', '地方发改、首都低碳、双碳', '01', '碳核算平台', '地方发改部门,地方发改,首都低碳,双碳', '2', 'Y', 'import', '地方发改部门', 908, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('ae04821ec36043ee9857e7eece39f62a', '上海发展和改革委员会', 'https://fgw.sh.gov.cn/', '地方发改、国际低碳、碳市场', '01', '碳核算平台', '地方发改部门,地方发改,国际低碳,碳市场', '2', 'Y', 'import', '地方发改部门', 907, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('ff9ab60dba8d4e4391e244ebfdfd2334', '天津发展和改革委员会', 'https://fzggw.tj.gov.cn/', '地方发改、绿色低碳、节能', '01', '碳核算平台', '地方发改部门,地方发改,绿色低碳,节能', '2', 'Y', 'import', '地方发改部门', 906, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('72e6dc42f8f04082bddf8e8f5f5b5f56', '重庆发展和改革委员会', 'https://fzggw.cq.gov.cn/', '地方发改、双碳、低碳转型', '01', '碳核算平台', '地方发改部门,地方发改,双碳,低碳转型', '2', 'Y', 'import', '地方发改部门', 905, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('a0599c5b61a84c5bb022bbeed0bdb42c', '山东省生态环境厅', 'https://sthjt.shandong.gov.cn/', '地方生态环境、低碳、监管', '01', '碳核算平台', '地方生态环境部门,地方生态环境,低碳,监管', '2', 'Y', 'import', '地方生态环境部门', 904, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('3912c09b61994199ab08f83f984250bc', '安徽省生态环境厅', 'https://sthjt.ah.gov.cn/', '地方生态环境、减排、低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,减排,低碳', '2', 'Y', 'import', '地方生态环境部门', 903, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('75ae4f3696ed41ed872ebd467d33a67a', '河北省生态环境厅', 'https://hbepb.hebei.gov.cn/', '地方生态环境、环保、低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,环保,低碳', '2', 'Y', 'import', '地方生态环境部门', 902, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('b29f401414a24e918c4bfe1cbe1a4c5e', '辽宁省生态环境厅', 'https://sthjt.ln.gov.cn/', '地方生态环境、减排、降碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,减排,降碳', '2', 'Y', 'import', '地方生态环境部门', 901, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('d7f4507158fb43afa660fbf258a08aa9', '江苏省生态环境厅', 'https://hbt.jiangsu.gov.cn/', '地方生态环境、绿色低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,绿色低碳', '2', 'Y', 'import', '地方生态环境部门', 900, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('491b7155bf79459285bc517204b9f8f7', '广东省生态环境厅', 'https://gdee.gd.gov.cn/', '地方生态环境、碳减排、监管', '01', '碳核算平台', '地方生态环境部门,地方生态环境,碳减排,监管', '2', 'Y', 'import', '地方生态环境部门', 899, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('21f7de5c6ceb43288b6a517d54355e08', '江西省生态环境厅', 'https://sthjt.jiangxi.gov.cn/', '地方生态环境、低碳、环保', '01', '碳核算平台', '地方生态环境部门,地方生态环境,低碳,环保', '2', 'Y', 'import', '地方生态环境部门', 898, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('75091028e58148229e857c2205fa6506', '贵州省生态环境厅', 'https://sthjt.guizhou.gov.cn/', '地方生态环境、生态低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,生态低碳', '2', 'Y', 'import', '地方生态环境部门', 897, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('067e56f7b87a46119b8c42e3ac6a2801', '福建省生态环境厅', 'https://sthjt.fujian.gov.cn/', '地方生态环境、减排、低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,减排,低碳', '2', 'Y', 'import', '地方生态环境部门', 896, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('17aafe7eda71409e955dcfd87e5a5cb0', '吉林省生态环境厅', 'https://sthjt.jl.gov.cn/', '地方生态环境、绿色低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,绿色低碳', '2', 'Y', 'import', '地方生态环境部门', 895, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('5832516b41624ae4ab08fb952e05fc23', '海南省生态环境厅', 'https://hnsthb.hainan.gov.cn/', '地方生态环境、生态碳汇', '01', '碳核算平台', '地方生态环境部门,地方生态环境,生态碳汇', '2', 'Y', 'import', '地方生态环境部门', 894, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('6a94eac111404bfc9fe3c92410ad77f6', '青海省生态环境厅', 'https://sthjt.qinghai.gov.cn/', '地方生态环境、清洁能源、低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,清洁能源,低碳', '2', 'Y', 'import', '地方生态环境部门', 893, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('eda605434e2445d0b54f2dc985a855cd', '河南省生态环境厅', 'https://sthjt.henan.gov.cn/', '地方生态环境、减排、低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,减排,低碳', '2', 'Y', 'import', '地方生态环境部门', 892, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('96b16529b13f4162b16e2f4f7f2572d6', '黑龙江省生态环境厅', 'https://sthjt.hlj.gov.cn/', '地方生态环境、绿色低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,绿色低碳', '2', 'Y', 'import', '地方生态环境部门', 891, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('3584290ef38247afb27769bdee41f13d', '云南省生态环境厅', 'https://sthjt.yn.gov.cn/', '地方生态环境、生态碳汇、低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,生态碳汇,低碳', '2', 'Y', 'import', '地方生态环境部门', 890, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('47709d5350fe4e40ac9ce33f05b8e792', '陕西省生态环境厅', 'https://sthjt.shaanxi.gov.cn/', '地方生态环境、减排、节能', '01', '碳核算平台', '地方生态环境部门,地方生态环境,减排,节能', '2', 'Y', 'import', '地方生态环境部门', 889, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('df67777d2e4446e4ba46a06e5053e888', '甘肃省生态环境厅', 'https://sthjt.gansu.gov.cn/', '地方生态环境、生态低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,生态低碳', '2', 'Y', 'import', '地方生态环境部门', 888, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('e810541df0ff432a86dad08f89895532', '四川省生态环境厅', 'https://sthjt.sc.gov.cn/', '地方生态环境、低碳、环保', '01', '碳核算平台', '地方生态环境部门,地方生态环境,低碳,环保', '2', 'Y', 'import', '地方生态环境部门', 887, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('92d791def2f74635bcccc0fc7bf0126c', '浙江省生态环境厅', 'https://zjszt.zj.gov.cn/', '地方生态环境、绿色低碳、监管', '01', '碳核算平台', '地方生态环境部门,地方生态环境,绿色低碳,监管', '2', 'Y', 'import', '地方生态环境部门', 886, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('418972ae807847619630e940b53fc86a', '湖北省生态环境厅', 'https://sthjt.hubei.gov.cn/', '地方生态环境、减排、低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,减排,低碳', '2', 'Y', 'import', '地方生态环境部门', 885, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('e3465d7979664822b8ff77e50a3638b3', '山西省生态环境厅', 'https://sthjt.shanxi.gov.cn/', '地方生态环境、煤炭低碳、减排', '01', '碳核算平台', '地方生态环境部门,地方生态环境,煤炭低碳,减排', '2', 'Y', 'import', '地方生态环境部门', 884, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('ac8b3e911ace4225b9a38a15b121cbda', '西藏自治区生态环境厅', 'https://sthjt.xizang.gov.cn/', '地方生态环境、生态保护、碳汇', '01', '碳核算平台', '地方生态环境部门,地方生态环境,生态保护,碳汇', '2', 'Y', 'import', '地方生态环境部门', 883, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('e0a494872cc246ec880309070e42fd6e', '新疆维吾尔自治区生态环境厅', 'https://sthjt.xinjiang.gov.cn/', '地方生态环境、清洁能源、低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,清洁能源,低碳', '2', 'Y', 'import', '地方生态环境部门', 882, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('3548af53956048cb98178e7ed42fdaa7', '宁夏回族自治区生态环境厅', 'https://sthjt.nx.gov.cn/', '地方生态环境、节能、低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,节能,低碳', '2', 'Y', 'import', '地方生态环境部门', 881, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('666ccc06dade4a379e475128a31cc887', '广西壮族自治区生态环境厅', 'https://sthjt.gxzf.gov.cn/', '地方生态环境、生态低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,生态低碳', '2', 'Y', 'import', '地方生态环境部门', 880, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('e0f618770a174706bf13e3ccb9686127', '内蒙古自治区生态环境厅', 'https://sthjt.nmg.gov.cn/', '地方生态环境、能源低碳、环保', '01', '碳核算平台', '地方生态环境部门,地方生态环境,能源低碳,环保', '2', 'Y', 'import', '地方生态环境部门', 879, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('d99b197588044349bfd07a9bf62b31d2', '北京生态环境局', 'https://sthjt.beijing.gov.cn/', '地方生态环境、首都低碳、监管', '01', '碳核算平台', '地方生态环境部门,地方生态环境,首都低碳,监管', '2', 'Y', 'import', '地方生态环境部门', 878, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('81e84a38aa1249f28662be4c842cc819', '上海生态环境局', 'https://sthjt.sh.gov.cn/', '地方生态环境、国际低碳、碳市场', '01', '碳核算平台', '地方生态环境部门,地方生态环境,国际低碳,碳市场', '2', 'Y', 'import', '地方生态环境部门', 877, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('cbacd00da26c4f97b85c9e47e49bf6b0', '天津生态环境局', 'https://sthjt.tj.gov.cn/', '地方生态环境、绿色低碳、减排', '01', '碳核算平台', '地方生态环境部门,地方生态环境,绿色低碳,减排', '2', 'Y', 'import', '地方生态环境部门', 876, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('3b82cfeb5715414aa630a50c9eb99a57', '重庆生态环境局', 'https://sthjt.cq.gov.cn/', '地方生态环境、双碳、低碳', '01', '碳核算平台', '地方生态环境部门,地方生态环境,双碳,低碳', '2', 'Y', 'import', '地方生态环境部门', 875, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('e3e9992f63a8480a890fe3ba757b2ed6', '山东省工业和信息化厅', 'https://gxt.shandong.gov.cn/', '地方工信、工业节能、绿色制造', '01', '碳核算平台', '地方工信部门,地方工信,工业节能,绿色制造', '2', 'Y', 'import', '地方工信部门', 874, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('e3808589dd774504ad2158261dba53d2', '安徽省经济和信息化厅', 'https://jx.ah.gov.cn/', '地方工信、工业低碳、能效', '01', '碳核算平台', '地方工信部门,地方工信,工业低碳,能效', '2', 'Y', 'import', '地方工信部门', 873, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('e829642af1d047778f2f067b5a5df643', '河北省工业和信息化厅', 'https://gxt.hebei.gov.cn/', '地方工信、工业节能、降碳', '01', '碳核算平台', '地方工信部门,地方工信,工业节能,降碳', '2', 'Y', 'import', '地方工信部门', 872, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('94a314544a43453e8c5f269b3a3d8e96', '江苏省工业和信息化厅', 'https://gxt.jiangsu.gov.cn/', '地方工信、绿色制造、低碳', '01', '碳核算平台', '地方工信部门,地方工信,绿色制造,低碳', '2', 'Y', 'import', '地方工信部门', 871, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('39fe944519db417da8ee43ba496bc515', '辽宁省工业和信息化厅', 'https://gxt.ln.gov.cn/', '地方工信、工业低碳、节能', '01', '碳核算平台', '地方工信部门,地方工信,工业低碳,节能', '2', 'Y', 'import', '地方工信部门', 870, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('ad80d42e2b7441a2a601a7af18ae1fb5', '江西省工业和信息化厅', 'https://jxciit.jiangxi.gov.cn/', '地方工信、工业节能、低碳', '01', '碳核算平台', '地方工信部门,地方工信,工业节能,低碳', '2', 'Y', 'import', '地方工信部门', 869, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('b18364c52bbc47cead72c43e74d04ca7', '贵州省工业和信息化厅', 'https://gxt.guizhou.gov.cn/', '地方工信、绿色制造、低碳', '01', '碳核算平台', '地方工信部门,地方工信,绿色制造,低碳', '2', 'Y', 'import', '地方工信部门', 868, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('dd466b6752a84c008354500fffc26152', '福建省工业和信息化厅', 'https://gxt.fujian.gov.cn/', '地方工信、工业低碳、节能', '01', '碳核算平台', '地方工信部门,地方工信,工业低碳,节能', '2', 'Y', 'import', '地方工信部门', 867, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('d5b6c5e7070b435ab249be1f2f546ad6', '吉林省工业和信息化厅', 'https://gxt.jl.gov.cn/', '地方工信、工业节能、低碳', '01', '碳核算平台', '地方工信部门,地方工信,工业节能,低碳', '2', 'Y', 'import', '地方工信部门', 866, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('0a9dcc97243e40fb9fafb188e321ba79', '海南省工业和信息化厅', 'https://iit.hainan.gov.cn/', '地方工信、绿色低碳、工业', '01', '碳核算平台', '地方工信部门,地方工信,绿色低碳,工业', '2', 'Y', 'import', '地方工信部门', 865, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('8ebd91f26b3c47bb80a0cda4840d25b8', '青海省工业和信息化厅', 'https://gxt.qinghai.gov.cn/', '地方工信、清洁能源、工业低碳', '01', '碳核算平台', '地方工信部门,地方工信,清洁能源,工业低碳', '2', 'Y', 'import', '地方工信部门', 864, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('8087680fde364fb293cf531a9eef8bdc', '河南省工业和信息化厅', 'https://gxt.henan.gov.cn/', '地方工信、工业节能、降碳', '01', '碳核算平台', '地方工信部门,地方工信,工业节能,降碳', '2', 'Y', 'import', '地方工信部门', 863, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('1a04c9999d21466f88b6ece4bd9e3a9d', '黑龙江省工业和信息化厅', 'https://gxt.hlj.gov.cn/', '地方工信、工业低碳、节能', '01', '碳核算平台', '地方工信部门,地方工信,工业低碳,节能', '2', 'Y', 'import', '地方工信部门', 862, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('bed2d194f9fb419e9b794db70abf3a56', '云南省工业和信息化厅', 'https://gxt.yn.gov.cn/', '地方工信、绿色制造、低碳', '01', '碳核算平台', '地方工信部门,地方工信,绿色制造,低碳', '2', 'Y', 'import', '地方工信部门', 861, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('b954561ba1264f9f997a0910bff7df81', '陕西省工业和信息化厅', 'https://gxt.shaanxi.gov.cn/', '地方工信、工业节能、低碳', '01', '碳核算平台', '地方工信部门,地方工信,工业节能,低碳', '2', 'Y', 'import', '地方工信部门', 860, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('0f159d6ef6c64a7a968238aaa0b711c3', '甘肃省工业和信息化厅', 'https://gxt.gansu.gov.cn/', '地方工信、工业低碳、节能', '01', '碳核算平台', '地方工信部门,地方工信,工业低碳,节能', '2', 'Y', 'import', '地方工信部门', 859, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('ef12b34c63c548d8b381711bd67ecde5', '四川省经济和信息化厅', 'https://jxt.sc.gov.cn/', '地方工信、工业低碳、绿色制造', '01', '碳核算平台', '地方工信部门,地方工信,工业低碳,绿色制造', '2', 'Y', 'import', '地方工信部门', 858, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('26c9e430372447a98d5bd64349654c8c', '浙江省经济和信息化厅', 'https://jxt.zj.gov.cn/', '地方工信、绿色制造、工业低碳', '01', '碳核算平台', '地方工信部门,地方工信,绿色制造,工业低碳', '2', 'Y', 'import', '地方工信部门', 857, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('9b6b4c2a401d4cbc8f9c15fe4730420d', '湖南省工业和信息化厅', 'https://gxt.hunan.gov.cn/', '地方工信、工业节能、低碳', '01', '碳核算平台', '地方工信部门,地方工信,工业节能,低碳', '2', 'Y', 'import', '地方工信部门', 856, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('76a15a2bf35a44aab10c74fc6702e905', '湖北省经济和信息化厅', 'https://jxt.hubei.gov.cn/', '地方工信、工业低碳、能效', '01', '碳核算平台', '地方工信部门,地方工信,工业低碳,能效', '2', 'Y', 'import', '地方工信部门', 855, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('812a47af96c8419ab8ec124b5568a44f', '山西工业和信息化厅', 'https://gxt.shanxi.gov.cn/', '地方工信、煤炭低碳、工业节能', '01', '碳核算平台', '地方工信部门,地方工信,煤炭低碳,工业节能', '2', 'Y', 'import', '地方工信部门', 854, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('d25a245bb87042dfaf7a423ea3b1f956', '新疆维吾尔族自治区工业和信息化厅', 'https://gxt.xinjiang.gov.cn/', '地方工信、清洁能源、工业低碳', '01', '碳核算平台', '地方工信部门,地方工信,清洁能源,工业低碳', '2', 'Y', 'import', '地方工信部门', 853, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('5fcaeb3f757d46dbb92aff1ff9200ba8', '广西壮族自治区工业和信息化厅', 'https://gxt.gxzf.gov.cn/', '地方工信、绿色制造、低碳', '01', '碳核算平台', '地方工信部门,地方工信,绿色制造,低碳', '2', 'Y', 'import', '地方工信部门', 852, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('78e4891b7cb54fb8939dace6f244135c', '宁夏回族自治区工业和信息化厅', 'https://gxt.nx.gov.cn/', '地方工信、工业节能、低碳', '01', '碳核算平台', '地方工信部门,地方工信,工业节能,低碳', '2', 'Y', 'import', '地方工信部门', 851, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('eae5e6e294f4457ea192214efea1e150', '内蒙古自治区工业和信息化厅', 'https://gxt.nmg.gov.cn/', '地方工信、能源低碳、工业', '01', '碳核算平台', '地方工信部门,地方工信,能源低碳,工业', '2', 'Y', 'import', '地方工信部门', 850, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('73808efa2e494119acb3b491e444d778', '西藏自治区经济和信息化厅', 'https://jxt.xizang.gov.cn/', '地方工信、绿色低碳、工业', '01', '碳核算平台', '地方工信部门,地方工信,绿色低碳,工业', '2', 'Y', 'import', '地方工信部门', 849, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('ddee975c02454e40bdcc17d159df9c37', '北京经济和信息化局', 'https://jxj.beijing.gov.cn/', '地方工信、首都工业、绿色制造', '01', '碳核算平台', '地方工信部门,地方工信,首都工业,绿色制造', '2', 'Y', 'import', '地方工信部门', 848, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('2a57784feb7445cea147877efbef90cd', '上海经济和信息化局委员会', 'https://sheitc.sh.gov.cn/', '地方工信、工业低碳、数字能效', '01', '碳核算平台', '地方工信部门,地方工信,工业低碳,数字能效', '2', 'Y', 'import', '地方工信部门', 847, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('d38d37871fab4be481db388f7f84fb41', '天津工业和信息化局', 'https://gxj.tj.gov.cn/', '地方工信、工业节能、低碳', '01', '碳核算平台', '地方工信部门,地方工信,工业节能,低碳', '2', 'Y', 'import', '地方工信部门', 846, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('88a511ddd361497f98cd4ac9e4bba0a9', '重庆工业和信息化发展中心', 'https://www.cqiidc.com/', '地方工信、工业低碳、服务', '01', '碳核算平台', '地方工信部门,地方工信,工业低碳,服务', '2', 'Y', 'import', '地方工信部门', 845, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('087a754570b44dac834cc35bccf4ebff', '北京绿色交易所', 'https://www.cbeeex.com/', '碳交易、绿电、绿色权益', '03', '碳交易平台', '交易机构,碳交易,绿电,绿色权益', '2', 'Y', 'import', '交易机构', 844, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('3303358aac9e4616a999dc8792e64e0f', '北京市碳排放权电子交易平台', 'https://www.bjets.com.cn/', '北京碳市场、配额交易', '03', '碳交易平台', '交易机构,北京碳市场,配额交易', '2', 'Y', 'import', '交易机构', 843, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('21a5188429004d2da6ed26a5385fe0b0', '全国温室气体自愿减排交易系统', 'https://ccer.mee.gov.cn/', 'CCER、自愿减排交易', '03', '碳交易平台', '交易机构,CCER,自愿减排交易', '2', 'Y', 'import', '交易机构', 842, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('2372130d211747d4a72fde098e2dd0f8', '上海环境能源交易所', 'https://www.cneeex.com/', '环境能源、碳交易、全国碳市场', '03', '碳交易平台', '交易机构,环境能源,碳交易,全国碳市场', '2', 'Y', 'import', '交易机构', 841, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('a858a3eb060e45859141a88065046feb', '天津排放权交易所', 'https://www.chinatcx.com/', '排放权、碳交易、节能', '03', '碳交易平台', '交易机构,排放权,碳交易,节能', '2', 'Y', 'import', '交易机构', 840, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('18d0b0825bcd400eb4fb34ca52497b3b', '湖北碳排放权交易中心', 'https://www.hbets.cn/', '碳交易、温室气体、低碳经济', '03', '碳交易平台', '交易机构,碳交易,温室气体,低碳经济', '2', 'Y', 'import', '交易机构', 839, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('4cc14c2788d14c9f82d097e652ed7315', '深圳碳排放交易所', 'https://www.cerx.cn/', '碳交易、自愿减排、试点市场', '03', '碳交易平台', '交易机构,碳交易,自愿减排,试点市场', '2', 'Y', 'import', '交易机构', 838, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('ee890a2ff06641e4a4a6284528dcbed7', '广州碳排放权交易所', 'https://www.cnemission.com/', '国家级碳试点、配额交易', '03', '碳交易平台', '交易机构,国家级碳试点,配额交易', '2', 'Y', 'import', '交易机构', 837, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('3fc1615abd5743d0a4de020217ea23be', '重庆碳排放权交易中心', 'https://www.tpf.com.cn/', '碳交易、地方碳市场', '03', '碳交易平台', '交易机构,碳交易,地方碳市场', '2', 'Y', 'import', '交易机构', 836, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('28f47f8499cd45b39eb8675f97ff6b91', '四川联合环境交易所', 'https://www.sceex.com.cn/', '环境权益、碳交易、绿证', '03', '碳交易平台', '交易机构,环境权益,碳交易,绿证', '2', 'Y', 'import', '交易机构', 835, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('01260ddc9ee645eea60ba12ac2215cb1', '海峡股权交易中心', 'https://www.hxee.com.cn/', '股权、环境权益、碳资产', '03', '碳交易平台', '交易机构,股权,环境权益,碳资产', '2', 'Y', 'import', '交易机构', 834, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('4ee235e1754d47368d89c85d5ba23e8e', '中国绿证认购平台', 'https://www.greenenergy.org.cn/', '绿电、绿证、认购交易', '03', '碳交易平台', '交易机构,绿电,绿证,认购交易', '2', 'Y', 'import', '交易机构', 833, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('e4d0aa9356ed448f99c2846e8152558d', '山东碳管家集团有限公司', 'https://www.tanguanjia.com/', '碳核查、双碳服务、碳管家', '02', '碳认证机构', '核查机构,碳核查,双碳服务,碳管家', '2', 'Y', 'import', '核查机构', 832, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('b2972ee46e1941d195335d9749df81dd', '中国质量认证中心/CQC', 'https://www.cqc.com.cn/', '国家级认证、碳核查、低碳认证', '02', '碳认证机构', '核查机构,国家级认证,碳核查,低碳认证', '2', 'Y', 'import', '核查机构', 831, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('372b6e0fe23045028f5ff68920f4e858', '中国国检测试控股集团股份有限公司', 'https://www.ctc.ac.cn/', '检验认证、碳核查、绿色认证', '02', '碳认证机构', '核查机构,检验认证,碳核查,绿色认证', '2', 'Y', 'import', '核查机构', 830, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('ad9309bf1af542d89cd7e46c7ebd25d9', '中环联合认证中心/CEC', 'https://www.cec-zg.com/', '环保认证、碳核查、节能', '02', '碳认证机构', '核查机构,环保认证,碳核查,节能', '2', 'Y', 'import', '核查机构', 829, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('b89d5dae879a49e6ab33374943181834', '中国船级社质量认证有限公司', 'https://www.ccs-c.com.cn/', '航运、碳核查、认证、检测', '02', '碳认证机构', '核查机构,航运,碳核查,认证,检测', '2', 'Y', 'import', '核查机构', 828, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('77705871ffcc401db95712908ccd098d', '深圳华测国际认证有限公司', 'https://www.cti-cert.com/', '检测认证、碳足迹、核查', '02', '碳认证机构', '核查机构,检测认证,碳足迹,核查', '2', 'Y', 'import', '核查机构', 827, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('3e118114ccce46cb9257ea7f2574618e', '中环协(北京)认证中心', 'https://www.zhxrz.org/', '环保认证、低碳、核查', '02', '碳认证机构', '核查机构,环保认证,低碳,核查', '2', 'Y', 'import', '核查机构', 826, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('ae5a4db4529f443f9a1e0069431a60c3', '深圳中环博宏环境技术有限公司', 'https://www.zhbh.com/', '环保咨询、低碳、污染治理', '05', '碳技术咨询', '咨询机构,环保咨询,低碳,污染治理', '2', 'Y', 'import', '咨询机构', 825, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('a4ee426e307e4767a82b6a672ee0d6bd', '华碳节能环保(北京)有限公司', 'https://www.huatan.com/', '碳咨询、碳管理、节能', '05', '碳技术咨询', '咨询机构,碳咨询,碳管理,节能', '2', 'Y', 'import', '咨询机构', 824, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('1139c7dd7950498995a1eaca355a4645', '山东雷石智能制造股份有限公司', 'https://www.leishilaser.com/', '再制造、节能、低碳技术', '05', '碳技术咨询', '咨询机构,再制造,节能,低碳技术', '2', 'Y', 'import', '咨询机构', 823, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('ad47ffd23d8d49289a90332ecb508b95', '中创碳云(中创碳投)', 'https://www.sinocarbon.com/', '碳咨询、碳资产、市场机制', '05', '碳技术咨询', '咨询机构,碳咨询,碳资产,市场机制', '2', 'Y', 'import', '咨询机构', 822, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('0f85c215862844a9ae74d27ca60bc93d', '中国国际工程咨询有限公司', 'https://www.ciecc.com.cn/', '工程咨询、低碳、双碳规划', '05', '碳技术咨询', '咨询机构,工程咨询,低碳,双碳规划', '2', 'Y', 'import', '咨询机构', 821, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('cb93c144c5824ce1b3d485f91c60326e', '北京市工程咨询有限公司', 'https://www.becc.com.cn/', '工程咨询、低碳、绿色发展', '05', '碳技术咨询', '咨询机构,工程咨询,低碳,绿色发展', '2', 'Y', 'import', '咨询机构', 820, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('a06225e040674a0c99d4a503c5f90924', '山东六牛网络科技有限公司', 'https://www.liuniukeji.com/', '碳系统、APP开发、数字化', '01', '碳核算平台', '软件服务,碳系统,APP开发,数字化', '2', 'Y', 'import', '软件服务', 819, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('675af1098940497e84625ada71e71c5c', '阿里云能耗宝', 'https://www.aliyun.com/product/energy/consumption', '碳核算、能耗优化、AI降碳', '01', '碳核算平台', '软件服务,碳核算,能耗优化,AI降碳', '2', 'Y', 'import', '软件服务', 818, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('3253737dc79046c4acd0fe67e6d2a6aa', '腾讯云能碳工厂', 'https://cloud.tencent.com/solution/energy', '能碳管理、SaaS、绿色低碳', '01', '碳核算平台', '软件服务,能碳管理,SaaS,绿色低碳', '2', 'Y', 'import', '软件服务', 817, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('29272d1a9fd74d89a21406fd776b6793', '珠海派诺科技股份有限公司', 'https://www.powerleader.com.cn/', '智慧能源、碳管理、物联网', '01', '碳核算平台', '软件服务,智慧能源,碳管理,物联网', '2', 'Y', 'import', '软件服务', 816, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('58e3c3662d794889a2549b1cbb60d78b', '百度智能云度能', 'https://cloud.baidu.com/solution/energy.html', '综合能源、碳管控、能效优化', '01', '碳核算平台', '软件服务,综合能源,碳管控,能效优化', '2', 'Y', 'import', '软件服务', 815, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('eb0ba8ec9d9a4c93aee3f625e47238c1', '浪潮云', 'https://www.inspur.com/', '政务云、碳数据、安全可信', '01', '碳核算平台', '软件服务,政务云,碳数据,安全可信', '2', 'Y', 'import', '软件服务', 814, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('9881da2c6c084355b37eb5b03682931c', '上海方融科技有限责任公司', 'https://www.fangrongtech.com/', '智慧能源、碳管理、物联网', '01', '碳核算平台', '软件服务,智慧能源,碳管理,物联网', '2', 'Y', 'import', '软件服务', 813, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('9de2e0ed523549249efd700552a1e568', '佳华科技', 'https://www.javatech.com.cn/', '物联网、大数据、环保碳数据', '01', '碳核算平台', '软件服务,物联网,大数据,环保碳数据', '2', 'Y', 'import', '软件服务', 812, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('c04068664ae9402f85b2be600f220b1c', '大自然保护协会(TNC)', 'https://www.tnc.org.cn/', '自然保护、碳汇、生态低碳', '05', '碳技术咨询', '国际组织,自然保护,碳汇,生态低碳', '2', 'Y', 'import', '国际组织', 811, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('373ae313d9a9450bb3d92bec6944f5fa', '国际碳行动伙伴组织', 'https://www.2degreesc.org/', '碳行动、国际合作、减排', '05', '碳技术咨询', '国际组织,碳行动,国际合作,减排', '2', 'Y', 'import', '国际组织', 810, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('4fff4286df4c40a3b7439cfbf03fc2b7', '美国环保协会', 'https://www.edf.org/', '环保、碳减排、国际合作', '05', '碳技术咨询', '国际组织,环保,碳减排,国际合作', '2', 'Y', 'import', '国际组织', 809, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('cdfb01cf2556456cac85996500f4d20e', '中国环境保护协会', 'https://www.zhb.org.cn/', '环保公益、低碳、绿色', '05', '碳技术咨询', '国际组织,环保公益,低碳,绿色', '2', 'Y', 'import', '国际组织', 808, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('8b8828ec5d1d4dc8ab858713ca278403', '世界自然保护联盟(IUCN)', 'https://www.iucn.org/', '自然保护、可持续、碳汇', '05', '碳技术咨询', '国际组织,自然保护,可持续,碳汇', '2', 'Y', 'import', '国际组织', 807, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('01d9aea884cd49b9ad3f00db28e5eed9', '联合国环境规划署', 'https://www.unep.org/', '全球环境、气候、低碳', '05', '碳技术咨询', '国际组织,全球环境,气候,低碳', '2', 'Y', 'import', '国际组织', 806, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('279bdc53f3c943e8b1e8756ed39b97d1', '绿色和平组织', 'https://www.greenpeace.org.cn/', '环保、低碳、气候行动', '05', '碳技术咨询', '国际组织,环保,低碳,气候行动', '2', 'Y', 'import', '国际组织', 805, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('8e6045b000a440719e8404ff9aab7456', '国际自然和自然资源保护协会(NRDC)', 'https://www.nrdc.org/', '自然保护、低碳、气候', '05', '碳技术咨询', '国际组织,自然保护,低碳,气候', '2', 'Y', 'import', '国际组织', 804, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('e8a7c58b58ad4c04a5a66ea073354c74', '世界自然基金会(WWF)', 'https://www.wwfchina.org/', '自然保护、碳汇、低碳', '05', '碳技术咨询', '国际组织,自然保护,碳汇,低碳', '2', 'Y', 'import', '国际组织', 803, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('21c5d9d4415e4116abcd166ba5a7ae3d', '国际可持续能源机构', 'https://www.irena.org/', '可持续能源、低碳、能效', '05', '碳技术咨询', '国际组织,可持续能源,低碳,能效', '2', 'Y', 'import', '国际组织', 802, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('a608d1a71a354e23bc2638a6fde83321', '绿普惠', 'https://www.lvpuhui.com/', '碳普惠、个人碳账本、全民低碳', '02', '碳认证机构', '普惠平台,碳普惠,个人碳账本,全民低碳', '2', 'Y', 'import', '普惠平台', 801, '2026-05-28 22:37:10', 'Y');
|
||||
INSERT INTO `txw_mhzc_gxnl_slxxb` (`wz_uuid`,`bt`,`wz_lj`,`jj`,`gxnl_fl_dm`,`gxnl_fl_mc`,`bqjh`,`zt`,`sjzt`,`lyqd_dm`,`qymc`,`pxh`,`lrrq`,`yxbz`) VALUES ('f25e22a22d9d4fdab7c6a221890f6f10', '碳普惠', 'https://www.tanpuhui.com/', '碳普惠、小微企业、公众减排', '02', '碳认证机构', '普惠平台,碳普惠,小微企业,公众减排', '2', 'Y', 'import', '普惠平台', 800, '2026-05-28 22:37:10', 'Y');
|
||||
@ -0,0 +1,31 @@
|
||||
package com.css.txw.mhzc.constants.gxnl;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public final class GxnlFlConstants {
|
||||
|
||||
private GxnlFlConstants() {
|
||||
}
|
||||
|
||||
public static final Map<String, String> FL_DM_TO_MC;
|
||||
|
||||
static {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
map.put("01", "碳核算平台");
|
||||
map.put("02", "碳认证机构");
|
||||
map.put("03", "碳交易平台");
|
||||
map.put("04", "碳金融服务");
|
||||
map.put("05", "碳技术咨询");
|
||||
FL_DM_TO_MC = Collections.unmodifiableMap(map);
|
||||
}
|
||||
|
||||
public static String getFlMc(String flDm) {
|
||||
return FL_DM_TO_MC.getOrDefault(flDm, "");
|
||||
}
|
||||
|
||||
public static boolean isValidFlDm(String flDm) {
|
||||
return FL_DM_TO_MC.containsKey(flDm);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,64 @@
|
||||
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.GxnlGxscToggleReqVO;
|
||||
import com.css.txw.mhzc.pojo.vo.GxnlSlxxSubmitReqVO;
|
||||
import com.css.txw.mhzc.pojo.vo.GxnlWzxxListReqVO;
|
||||
import com.css.txw.mhzc.pojo.vo.GxnlWzxxVO;
|
||||
import com.css.txw.mhzc.service.TxwMhzcGxnlService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/gxnl")
|
||||
@Tag(name = "共性能力平台")
|
||||
@Validated
|
||||
public class GxnlController {
|
||||
|
||||
@Resource
|
||||
private TxwMhzcGxnlService gxnlService;
|
||||
|
||||
@PostMapping("/wzxx/list")
|
||||
@Operation(summary = "共性能力网站列表")
|
||||
public CommonResult<Map<String, Object>> wzxxList(@RequestBody GxnlWzxxListReqVO reqVO) {
|
||||
Page<GxnlWzxxVO> page = gxnlService.wzxxList(reqVO);
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("records", page.getRecords());
|
||||
data.put("list", page.getRecords());
|
||||
data.put("total", page.getTotal());
|
||||
return CommonResult.success(data);
|
||||
}
|
||||
|
||||
@PostMapping("/slxx/submit")
|
||||
@Operation(summary = "共性能力收录提交")
|
||||
public CommonResult<String> submitSlxx(@RequestBody GxnlSlxxSubmitReqVO reqVO) {
|
||||
return CommonResult.success(gxnlService.submitSlxx(reqVO));
|
||||
}
|
||||
|
||||
@PostMapping("/gxsc/toggle")
|
||||
@Operation(summary = "共性能力收藏切换")
|
||||
public CommonResult<String> toggleGxsc(@RequestBody GxnlGxscToggleReqVO reqVO) {
|
||||
return CommonResult.success(gxnlService.toggleGxsc(reqVO));
|
||||
}
|
||||
|
||||
@PostMapping("/gxsc/myList")
|
||||
@Operation(summary = "我的收藏")
|
||||
public CommonResult<Map<String, Object>> myFavoriteList(@RequestBody GxnlWzxxListReqVO reqVO) {
|
||||
Page<GxnlWzxxVO> page = gxnlService.myFavoriteList(reqVO);
|
||||
Map<String, Object> data = new HashMap<>();
|
||||
data.put("records", page.getRecords());
|
||||
data.put("list", page.getRecords());
|
||||
data.put("total", page.getTotal());
|
||||
return CommonResult.success(data);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,26 @@
|
||||
package com.css.txw.mhzc.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.css.txw.mhzc.pojo.domain.TxwMhzcGxnlGxscbDO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface TxwMhzcGxnlGxscbMapper extends BaseMapper<TxwMhzcGxnlGxscbDO> {
|
||||
|
||||
default List<TxwMhzcGxnlGxscbDO> getActiveByYhUuid(String yhUuid) {
|
||||
QueryWrapper<TxwMhzcGxnlGxscbDO> wrapper = new QueryWrapper<>();
|
||||
wrapper.lambda()
|
||||
.eq(TxwMhzcGxnlGxscbDO::getYhUuid, yhUuid)
|
||||
.eq(TxwMhzcGxnlGxscbDO::getYxbz, "Y");
|
||||
return selectList(wrapper);
|
||||
}
|
||||
|
||||
default TxwMhzcGxnlGxscbDO getByWzUuidAndYhUuid(String wzUuid, String yhUuid) {
|
||||
QueryWrapper<TxwMhzcGxnlGxscbDO> wrapper = new QueryWrapper<>();
|
||||
wrapper.lambda()
|
||||
.eq(TxwMhzcGxnlGxscbDO::getWzUuid, wzUuid)
|
||||
.eq(TxwMhzcGxnlGxscbDO::getYhUuid, yhUuid);
|
||||
return selectOne(wrapper);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,37 @@
|
||||
package com.css.txw.mhzc.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.css.ggzc.framework.common.util.gy.GyUtils;
|
||||
import com.css.ggzc.framework.mybatis.core.query.QueryWrapperX;
|
||||
import com.css.txw.mhzc.pojo.domain.TxwMhzcGxnlSlxxbDO;
|
||||
import com.css.txw.mhzc.pojo.vo.GxnlWzxxListReqVO;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public interface TxwMhzcGxnlSlxxbMapper extends BaseMapper<TxwMhzcGxnlSlxxbDO> {
|
||||
|
||||
default Page<TxwMhzcGxnlSlxxbDO> portalList(GxnlWzxxListReqVO reqVO, Set<String> scWzUuids) {
|
||||
int pageNo = reqVO.getPageNo() == null || reqVO.getPageNo() < 1 ? 1 : reqVO.getPageNo();
|
||||
int pageSize = reqVO.getPageSize() == null || reqVO.getPageSize() < 1 ? 10 : reqVO.getPageSize();
|
||||
if (pageSize > 500) {
|
||||
pageSize = 500;
|
||||
}
|
||||
Page<TxwMhzcGxnlSlxxbDO> page = new Page<>(pageNo, pageSize);
|
||||
QueryWrapperX<TxwMhzcGxnlSlxxbDO> wrapper = new QueryWrapperX<>();
|
||||
wrapper.lambda()
|
||||
.eq(TxwMhzcGxnlSlxxbDO::getYxbz, "Y")
|
||||
.eq(TxwMhzcGxnlSlxxbDO::getZt, "2")
|
||||
.eq(TxwMhzcGxnlSlxxbDO::getSjzt, "Y")
|
||||
.eq(!GyUtils.isNull(reqVO.getGxnlFlDm()), TxwMhzcGxnlSlxxbDO::getGxnlFlDm, reqVO.getGxnlFlDm())
|
||||
.and(!GyUtils.isNull(reqVO.getNr()), w -> w
|
||||
.like(TxwMhzcGxnlSlxxbDO::getBt, reqVO.getNr())
|
||||
.or().like(TxwMhzcGxnlSlxxbDO::getJj, reqVO.getNr())
|
||||
.or().like(TxwMhzcGxnlSlxxbDO::getQymc, reqVO.getNr())
|
||||
.or().like(TxwMhzcGxnlSlxxbDO::getBqjh, reqVO.getNr()))
|
||||
.in(Boolean.TRUE.equals(reqVO.getOnlySc()) && !GyUtils.isNull(scWzUuids), TxwMhzcGxnlSlxxbDO::getWzUuid, scWzUuids)
|
||||
.orderByDesc(TxwMhzcGxnlSlxxbDO::getPxh)
|
||||
.orderByDesc(TxwMhzcGxnlSlxxbDO::getLrrq);
|
||||
return selectPage(page, wrapper);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,39 @@
|
||||
package com.css.txw.mhzc.pojo.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 共性能力收藏表
|
||||
* @TableName txw_mhzc_gxnl_gxscb
|
||||
*/
|
||||
@TableName(value = "txw_mhzc_gxnl_gxscb")
|
||||
@Data
|
||||
public class TxwMhzcGxnlGxscbDO implements Serializable {
|
||||
|
||||
@TableId(value = "uuid")
|
||||
private String uuid;
|
||||
|
||||
@TableField(value = "wz_uuid")
|
||||
private String wzUuid;
|
||||
|
||||
@TableField(value = "yh_uuid")
|
||||
private String yhUuid;
|
||||
|
||||
@TableField(value = "lrrq")
|
||||
private Date lrrq;
|
||||
|
||||
@TableField(value = "qxrq")
|
||||
private Date qxrq;
|
||||
|
||||
@TableField(value = "yxbz")
|
||||
private String yxbz;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
||||
@ -0,0 +1,108 @@
|
||||
package com.css.txw.mhzc.pojo.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 共性能力收录信息表
|
||||
* @TableName txw_mhzc_gxnl_slxxb
|
||||
*/
|
||||
@TableName(value = "txw_mhzc_gxnl_slxxb")
|
||||
@Data
|
||||
public class TxwMhzcGxnlSlxxbDO implements Serializable {
|
||||
|
||||
@TableId(value = "wz_uuid")
|
||||
private String wzUuid;
|
||||
|
||||
@TableField(value = "bt")
|
||||
private String bt;
|
||||
|
||||
@TableField(value = "wz_lj")
|
||||
private String wzLj;
|
||||
|
||||
@TableField(value = "jj")
|
||||
private String jj;
|
||||
|
||||
@TableField(value = "gxnl_fl_dm")
|
||||
private String gxnlFlDm;
|
||||
|
||||
@TableField(value = "gxnl_fl_mc")
|
||||
private String gxnlFlMc;
|
||||
|
||||
@TableField(value = "bqjh")
|
||||
private String bqjh;
|
||||
|
||||
@TableField(value = "zt")
|
||||
private String zt;
|
||||
|
||||
@TableField(value = "sjzt")
|
||||
private String sjzt;
|
||||
|
||||
@TableField(value = "lyqd_dm")
|
||||
private String lyqdDm;
|
||||
|
||||
@TableField(value = "tjr_nc")
|
||||
private String tjrNc;
|
||||
|
||||
@TableField(value = "tjr_lxdh")
|
||||
private String tjrLxdh;
|
||||
|
||||
@TableField(value = "yh_uuid")
|
||||
private String yhUuid;
|
||||
|
||||
@TableField(value = "qyuuid")
|
||||
private String qyuuid;
|
||||
|
||||
@TableField(value = "qymc")
|
||||
private String qymc;
|
||||
|
||||
@TableField(value = "shyj")
|
||||
private String shyj;
|
||||
|
||||
@TableField(value = "shruuid")
|
||||
private String shruuid;
|
||||
|
||||
@TableField(value = "shsj")
|
||||
private Date shsj;
|
||||
|
||||
@TableField(value = "shcs")
|
||||
private Integer shcs;
|
||||
|
||||
@TableField(value = "shls_j")
|
||||
private String shlsJ;
|
||||
|
||||
@TableField(value = "pxh")
|
||||
private Integer pxh;
|
||||
|
||||
@TableField(value = "llcs")
|
||||
private Integer llcs;
|
||||
|
||||
@TableField(value = "sccs")
|
||||
private Integer sccs;
|
||||
|
||||
@TableField(value = "bbh")
|
||||
private Integer bbh;
|
||||
|
||||
@TableField(value = "lrruuid")
|
||||
private String lrruuid;
|
||||
|
||||
@TableField(value = "lrrq")
|
||||
private Date lrrq;
|
||||
|
||||
@TableField(value = "xgruuid")
|
||||
private String xgruuid;
|
||||
|
||||
@TableField(value = "xgrq")
|
||||
private Date xgrq;
|
||||
|
||||
@TableField(value = "yxbz")
|
||||
private String yxbz;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
||||
@ -0,0 +1,14 @@
|
||||
package com.css.txw.mhzc.pojo.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class GxnlGxscToggleReqVO implements Serializable {
|
||||
|
||||
private String wzUuid;
|
||||
|
||||
/** add / remove */
|
||||
private String type;
|
||||
}
|
||||
@ -0,0 +1,21 @@
|
||||
package com.css.txw.mhzc.pojo.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class GxnlSlxxSubmitReqVO implements Serializable {
|
||||
|
||||
private String bt;
|
||||
|
||||
private String wzLj;
|
||||
|
||||
private String jj;
|
||||
|
||||
/** 共性能力分类代码 01~05 */
|
||||
private String gxnlFlDm;
|
||||
|
||||
/** 标签,逗号分隔 */
|
||||
private String bqjh;
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
package com.css.txw.mhzc.pojo.vo;
|
||||
|
||||
import com.css.ggzc.framework.common.pojo.PageParam;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class GxnlWzxxListReqVO extends PageParam {
|
||||
|
||||
/** 共性能力分类代码 01~05 */
|
||||
private String gxnlFlDm;
|
||||
|
||||
/** 关键词 */
|
||||
private String nr;
|
||||
|
||||
/** 仅返回当前用户收藏 */
|
||||
private Boolean onlySc;
|
||||
}
|
||||
@ -0,0 +1,39 @@
|
||||
package com.css.txw.mhzc.pojo.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class GxnlWzxxVO implements Serializable {
|
||||
|
||||
private String wzUuid;
|
||||
|
||||
private String bt;
|
||||
|
||||
private String bt1;
|
||||
|
||||
private String jj;
|
||||
|
||||
private String wzLj;
|
||||
|
||||
private String bqjh;
|
||||
|
||||
private String gxnlFlDm;
|
||||
|
||||
private String gxnlFlMc;
|
||||
|
||||
/** 子类型/来源(Excel 类型列,展示在卡片副标题) */
|
||||
private String qymc;
|
||||
|
||||
/** 是否已收藏 Y/N */
|
||||
private String scbz;
|
||||
|
||||
/** 条目是否有效 Y/N(下架或删除为 N) */
|
||||
private String yxzt;
|
||||
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date lrrq;
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
package com.css.txw.mhzc.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.css.txw.mhzc.pojo.vo.GxnlGxscToggleReqVO;
|
||||
import com.css.txw.mhzc.pojo.vo.GxnlSlxxSubmitReqVO;
|
||||
import com.css.txw.mhzc.pojo.vo.GxnlWzxxListReqVO;
|
||||
import com.css.txw.mhzc.pojo.vo.GxnlWzxxVO;
|
||||
|
||||
public interface TxwMhzcGxnlService {
|
||||
|
||||
Page<GxnlWzxxVO> wzxxList(GxnlWzxxListReqVO reqVO);
|
||||
|
||||
String submitSlxx(GxnlSlxxSubmitReqVO reqVO);
|
||||
|
||||
String toggleGxsc(GxnlGxscToggleReqVO reqVO);
|
||||
|
||||
Page<GxnlWzxxVO> myFavoriteList(GxnlWzxxListReqVO reqVO);
|
||||
}
|
||||
@ -0,0 +1,217 @@
|
||||
package com.css.txw.mhzc.service.impl;
|
||||
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.css.ggzc.framework.common.util.gy.GyUtils;
|
||||
import com.css.ggzc.framework.common.util.object.BeanUtils;
|
||||
import com.css.ggzc.framework.session.SessionUtils;
|
||||
import com.css.txw.mhzc.constants.gxnl.GxnlFlConstants;
|
||||
import com.css.txw.mhzc.mapper.TxwMhzcGxnlGxscbMapper;
|
||||
import com.css.txw.mhzc.mapper.TxwMhzcGxnlSlxxbMapper;
|
||||
import com.css.txw.mhzc.pojo.domain.TxwMhzcGxnlGxscbDO;
|
||||
import com.css.txw.mhzc.pojo.domain.TxwMhzcGxnlSlxxbDO;
|
||||
import com.css.txw.mhzc.pojo.vo.GxnlGxscToggleReqVO;
|
||||
import com.css.txw.mhzc.pojo.vo.GxnlSlxxSubmitReqVO;
|
||||
import com.css.txw.mhzc.pojo.vo.GxnlWzxxListReqVO;
|
||||
import com.css.txw.mhzc.pojo.vo.GxnlWzxxVO;
|
||||
import com.css.txw.mhzc.service.TxwMhzcGxnlService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class TxwMhzcGxnlServiceImpl implements TxwMhzcGxnlService {
|
||||
|
||||
@Resource
|
||||
private TxwMhzcGxnlSlxxbMapper slxxbMapper;
|
||||
|
||||
@Resource
|
||||
private TxwMhzcGxnlGxscbMapper gxscbMapper;
|
||||
|
||||
@Override
|
||||
public Page<GxnlWzxxVO> wzxxList(GxnlWzxxListReqVO reqVO) {
|
||||
Set<String> scWzUuids = loadScWzUuids(Boolean.TRUE.equals(reqVO.getOnlySc()));
|
||||
if (Boolean.TRUE.equals(reqVO.getOnlySc()) && GyUtils.isNull(scWzUuids)) {
|
||||
return emptyPage(reqVO);
|
||||
}
|
||||
Page<TxwMhzcGxnlSlxxbDO> page = slxxbMapper.portalList(reqVO, scWzUuids);
|
||||
Set<String> favoriteSet = loadFavoriteSet();
|
||||
return toVoPage(page, favoriteSet);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String submitSlxx(GxnlSlxxSubmitReqVO reqVO) {
|
||||
validateSubmit(reqVO);
|
||||
TxwMhzcGxnlSlxxbDO entity = new TxwMhzcGxnlSlxxbDO();
|
||||
entity.setWzUuid(IdUtil.fastSimpleUUID());
|
||||
entity.setBt(trim(reqVO.getBt()));
|
||||
entity.setWzLj(trim(reqVO.getWzLj()));
|
||||
entity.setJj(trim(reqVO.getJj()));
|
||||
entity.setGxnlFlDm(reqVO.getGxnlFlDm());
|
||||
entity.setGxnlFlMc(GxnlFlConstants.getFlMc(reqVO.getGxnlFlDm()));
|
||||
entity.setBqjh(trim(reqVO.getBqjh()));
|
||||
entity.setZt("1");
|
||||
entity.setSjzt("N");
|
||||
entity.setLyqdDm("user");
|
||||
entity.setYhUuid(SessionUtils.getYhUuid());
|
||||
entity.setLrruuid(SessionUtils.getYhUuid());
|
||||
entity.setLrrq(new Date());
|
||||
entity.setYxbz("Y");
|
||||
entity.setPxh(0);
|
||||
entity.setShcs(0);
|
||||
entity.setBbh(0);
|
||||
entity.setLlcs(0);
|
||||
entity.setSccs(0);
|
||||
slxxbMapper.insert(entity);
|
||||
return "success";
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String toggleGxsc(GxnlGxscToggleReqVO reqVO) {
|
||||
if (GyUtils.isNull(reqVO.getWzUuid()) || GyUtils.isNull(reqVO.getType())) {
|
||||
throw new IllegalArgumentException("参数不完整");
|
||||
}
|
||||
String yhUuid = SessionUtils.getYhUuid();
|
||||
if (GyUtils.isNull(yhUuid)) {
|
||||
throw new IllegalStateException("未登录");
|
||||
}
|
||||
TxwMhzcGxnlSlxxbDO slxx = slxxbMapper.selectById(reqVO.getWzUuid());
|
||||
if (slxx == null || !"Y".equals(slxx.getYxbz()) || !"2".equals(slxx.getZt()) || !"Y".equals(slxx.getSjzt())) {
|
||||
throw new IllegalStateException("条目不可收藏");
|
||||
}
|
||||
TxwMhzcGxnlGxscbDO existing = gxscbMapper.getByWzUuidAndYhUuid(reqVO.getWzUuid(), yhUuid);
|
||||
if ("add".equals(reqVO.getType())) {
|
||||
if (existing != null) {
|
||||
if ("Y".equals(existing.getYxbz())) {
|
||||
return "success";
|
||||
}
|
||||
existing.setYxbz("Y");
|
||||
existing.setLrrq(new Date());
|
||||
existing.setQxrq(null);
|
||||
gxscbMapper.updateById(existing);
|
||||
adjustSccs(slxx, 1);
|
||||
} else {
|
||||
TxwMhzcGxnlGxscbDO created = new TxwMhzcGxnlGxscbDO();
|
||||
created.setUuid(IdUtil.fastSimpleUUID());
|
||||
created.setWzUuid(reqVO.getWzUuid());
|
||||
created.setYhUuid(yhUuid);
|
||||
created.setLrrq(new Date());
|
||||
created.setYxbz("Y");
|
||||
gxscbMapper.insert(created);
|
||||
adjustSccs(slxx, 1);
|
||||
}
|
||||
} else if ("remove".equals(reqVO.getType())) {
|
||||
if (existing != null && "Y".equals(existing.getYxbz())) {
|
||||
existing.setYxbz("N");
|
||||
existing.setQxrq(new Date());
|
||||
gxscbMapper.updateById(existing);
|
||||
adjustSccs(slxx, -1);
|
||||
}
|
||||
} else {
|
||||
throw new IllegalArgumentException("type 无效");
|
||||
}
|
||||
return "success";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<GxnlWzxxVO> myFavoriteList(GxnlWzxxListReqVO reqVO) {
|
||||
GxnlWzxxListReqVO query = reqVO == null ? new GxnlWzxxListReqVO() : reqVO;
|
||||
query.setOnlySc(true);
|
||||
return wzxxList(query);
|
||||
}
|
||||
|
||||
private void adjustSccs(TxwMhzcGxnlSlxxbDO slxx, int delta) {
|
||||
int current = slxx.getSccs() == null ? 0 : slxx.getSccs();
|
||||
int next = Math.max(0, current + delta);
|
||||
TxwMhzcGxnlSlxxbDO update = new TxwMhzcGxnlSlxxbDO();
|
||||
update.setWzUuid(slxx.getWzUuid());
|
||||
update.setSccs(next);
|
||||
slxxbMapper.updateById(update);
|
||||
}
|
||||
|
||||
private Set<String> loadScWzUuids(boolean onlySc) {
|
||||
if (!onlySc) {
|
||||
return null;
|
||||
}
|
||||
String yhUuid = SessionUtils.getYhUuid();
|
||||
if (GyUtils.isNull(yhUuid)) {
|
||||
return null;
|
||||
}
|
||||
List<TxwMhzcGxnlGxscbDO> list = gxscbMapper.getActiveByYhUuid(yhUuid);
|
||||
if (GyUtils.isNull(list)) {
|
||||
return null;
|
||||
}
|
||||
return list.stream().map(TxwMhzcGxnlGxscbDO::getWzUuid).collect(Collectors.toCollection(HashSet::new));
|
||||
}
|
||||
|
||||
private Set<String> loadFavoriteSet() {
|
||||
String yhUuid = SessionUtils.getYhUuid();
|
||||
if (GyUtils.isNull(yhUuid)) {
|
||||
return new HashSet<>();
|
||||
}
|
||||
List<TxwMhzcGxnlGxscbDO> list = gxscbMapper.getActiveByYhUuid(yhUuid);
|
||||
if (GyUtils.isNull(list)) {
|
||||
return new HashSet<>();
|
||||
}
|
||||
return list.stream().map(TxwMhzcGxnlGxscbDO::getWzUuid).collect(Collectors.toCollection(HashSet::new));
|
||||
}
|
||||
|
||||
private Page<GxnlWzxxVO> emptyPage(GxnlWzxxListReqVO reqVO) {
|
||||
int pageNo = reqVO.getPageNo() == null || reqVO.getPageNo() < 1 ? 1 : reqVO.getPageNo();
|
||||
int pageSize = reqVO.getPageSize() == null || reqVO.getPageSize() < 1 ? 10 : reqVO.getPageSize();
|
||||
Page<GxnlWzxxVO> page = new Page<>(pageNo, pageSize, 0);
|
||||
page.setRecords(new ArrayList<>());
|
||||
return page;
|
||||
}
|
||||
|
||||
private Page<GxnlWzxxVO> toVoPage(Page<TxwMhzcGxnlSlxxbDO> page, Set<String> favoriteSet) {
|
||||
Page<GxnlWzxxVO> voPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal());
|
||||
if (GyUtils.isNull(page.getRecords())) {
|
||||
voPage.setRecords(new ArrayList<>());
|
||||
return voPage;
|
||||
}
|
||||
List<GxnlWzxxVO> records = page.getRecords().stream()
|
||||
.map(item -> toVo(item, favoriteSet))
|
||||
.collect(Collectors.toList());
|
||||
voPage.setRecords(records);
|
||||
return voPage;
|
||||
}
|
||||
|
||||
private GxnlWzxxVO toVo(TxwMhzcGxnlSlxxbDO item, Set<String> favoriteSet) {
|
||||
GxnlWzxxVO vo = BeanUtils.toBean(item, GxnlWzxxVO.class);
|
||||
vo.setBt1(item.getBt());
|
||||
vo.setScbz(favoriteSet.contains(item.getWzUuid()) ? "Y" : "N");
|
||||
vo.setYxzt("Y");
|
||||
return vo;
|
||||
}
|
||||
|
||||
private void validateSubmit(GxnlSlxxSubmitReqVO reqVO) {
|
||||
if (reqVO == null) {
|
||||
throw new IllegalArgumentException("参数不能为空");
|
||||
}
|
||||
if (GyUtils.isNull(trim(reqVO.getBt()))) {
|
||||
throw new IllegalArgumentException("请输入名称");
|
||||
}
|
||||
if (GyUtils.isNull(trim(reqVO.getWzLj())) || !trim(reqVO.getWzLj()).matches("^https?://.+")) {
|
||||
throw new IllegalArgumentException("链接格式非法");
|
||||
}
|
||||
if (GyUtils.isNull(trim(reqVO.getJj()))) {
|
||||
throw new IllegalArgumentException("请输入简介");
|
||||
}
|
||||
if (!GxnlFlConstants.isValidFlDm(reqVO.getGxnlFlDm())) {
|
||||
throw new IllegalArgumentException("分类代码不存在");
|
||||
}
|
||||
}
|
||||
|
||||
private String trim(String value) {
|
||||
return value == null ? null : value.trim();
|
||||
}
|
||||
}
|
||||
BIN
可信碳共性能力网站导航.xlsx
Normal file
BIN
可信碳共性能力网站导航.xlsx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user