Compare commits

...

13 Commits
dev ... main

Author SHA1 Message Date
012c48c5dd feat: 切换路由自动滚动到最顶部 2026-04-08 16:38:51 +08:00
b3a9601b5f feat: 申请服务跳转链接 2026-04-07 10:00:04 +08:00
5fff9b86e1 fix: 字典码表大小写错误 2026-04-07 09:57:11 +08:00
2d009323e4 feat: 样式调整、服务市场筛选框调整 2026-04-06 22:29:30 +08:00
huangweiming
a2c31635dd fix:首页一些排版调整 2026-04-06 20:03:46 +08:00
d7db320ba2 feat: 调整跳转链接、footer文案 2026-04-06 17:35:40 +08:00
331bb97db5 Merge branch 'dev' 2026-04-06 17:23:13 +08:00
56172e39e3 chore: gitignore 2026-04-06 17:20:14 +08:00
huangweiming
d301ad5a9c fix:修改外部链接地址 2026-04-06 11:34:23 +08:00
huangweiming
4229d445f9 Merge branch 'dev'
# Conflicts:
#	.gitignore
#	txw-gxzx-web/yarn.lock
#	txw-kxtfwzx-web/yarn.lock
#	txw-mhzc-web/.eslintrc.js
#	txw-mhzc-web/package.json
#	txw-mhzc-web/src/pages/index/components/footer/index.vue
#	txw-mhzc-web/src/pages/index/components/logo/index.vue
#	txw-mhzc-web/src/pages/index/components/nav/index2.vue
#	txw-mhzc-web/src/pages/index/router/index.js
#	txw-mhzc-web/src/pages/index/router/routes.js
#	txw-mhzc-web/src/pages/index/views/fwsc/fwsc.vue
#	txw-mhzc-web/src/pages/index/views/fwsc/index.vue
#	txw-mhzc-web/src/pages/index/views/fwsc/jrsc.vue
#	txw-mhzc-web/src/pages/index/views/fwsc/sjlbc.vue
#	txw-mhzc-web/src/pages/index/views/fwsc/sjsc.vue
#	txw-mhzc-web/src/pages/index/views/fwsc/xqsc.vue
#	txw-mhzc-web/src/pages/index/views/glxtSy/glxtSy.vue
#	txw-mhzc-web/src/pages/index/views/home/mhNewMain.vue
#	txw-mhzc-web/src/pages/index/views/home2/index.vue
#	txw-mhzc-web/src/pages/index/views/main.vue
#	txw-mhzc-web/src/settings/index.js
#	txw-mhzc-web/vue.config.js
#	txw-mhzc-web/yarn.lock
#	txw-sso/txw-sso-service-biz/src/main/resources/bootstrap.yml
#	txw-tzzx-web/yarn.lock
#	txw-ytzx-web/yarn.lock
#	txw-yygl-web/yarn.lock
2026-04-06 09:23:39 +08:00
huangweiming
d456209b2a fix:菜单微调 2026-04-05 18:11:01 +08:00
huangweiming
b5dbf326cb fix:ifream链接调整 2026-04-05 17:22:07 +08:00
huangweiming
f4a83c8f9a Initial commit 2026-04-05 15:05:13 +08:00
33 changed files with 87158 additions and 11531 deletions

55
.gitignore vendored
View File

@ -1 +1,54 @@
prd/ # Compiled class file
*.class
target
classes
prd
# Log file
*.log
log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.war
*.ear
*.zip
*.tar.gz
*.rar
*.iml
.idea
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
/.settings/
.classpath
.factorypath
.project
.DS_Store
node_modules/
dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
/test/unit/coverage/
/test/e2e/reports/
selenium-debug.log
debug.log
ewm.png
# Editor directories and files
.idea
.settings
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln

View File

@ -1196,18 +1196,6 @@
"@types/conventional-commits-parser" "^5.0.0" "@types/conventional-commits-parser" "^5.0.0"
chalk "^5.3.0" chalk "^5.3.0"
"@cssyq/ggzc-web@^1.0.7":
version "1.0.8"
resolved "http://10.23.10.90:4873/@cssyq%2fggzc-web/-/ggzc-web-1.0.8.tgz#aa73093ae02914fda1b283809eac031b09046d2e"
integrity sha512-ERk8chEGrvMqMAn/ObYzenAQUeEWL5RRHBYDH+ueIKPl9g8mIMMcrwJNuK+OvNbvNti18RxkAURy6uaHoqnGSQ==
dependencies:
vue-cli-service "^5.0.10"
"@fortawesome/fontawesome-free@^7.0.1":
version "7.2.0"
resolved "https://registry.npmmirror.com/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz#188c1053ce422ad1f934d7df242a973fcb89636d"
integrity sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==
"@gar/promisify@^1.0.1": "@gar/promisify@^1.0.1":
version "1.1.3" version "1.1.3"
resolved "http://10.23.10.90:4873/@gar%2fpromisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" resolved "http://10.23.10.90:4873/@gar%2fpromisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
@ -13249,11 +13237,6 @@ vue-cli-plugin-style-resources-loader@~0.1.5:
resolved "http://10.23.10.90:4873/vue-cli-plugin-style-resources-loader/-/vue-cli-plugin-style-resources-loader-0.1.5.tgz#3e95f4df41f5408e1255664690698c0533648109" resolved "http://10.23.10.90:4873/vue-cli-plugin-style-resources-loader/-/vue-cli-plugin-style-resources-loader-0.1.5.tgz#3e95f4df41f5408e1255664690698c0533648109"
integrity sha512-LluhjWTZmpGl3tiXg51EciF+T70IN/9t6UvfmgluJBqxbrb6OV9i7L5lTd+OKtcTeghDkhcBmYhtTxxU4w/8sQ== integrity sha512-LluhjWTZmpGl3tiXg51EciF+T70IN/9t6UvfmgluJBqxbrb6OV9i7L5lTd+OKtcTeghDkhcBmYhtTxxU4w/8sQ==
vue-cli-service@^5.0.10:
version "5.0.10"
resolved "http://10.23.10.90:4873/vue-cli-service/-/vue-cli-service-5.0.10.tgz#1ae10365dec4539358cb4860cd5876f93faf16e3"
integrity sha512-j4+wxqjaHsgphWsQsDs0ET1TWSu+dW5syxk5MloTp6BsQ9dpN+SB0nq253thS6konMC+YiQLHxbf73ytrTHoRA==
vue-demi@^0.13.11: vue-demi@^0.13.11:
version "0.13.11" version "0.13.11"
resolved "http://10.23.10.90:4873/vue-demi/-/vue-demi-0.13.11.tgz#7d90369bdae8974d87b1973564ad390182410d99" resolved "http://10.23.10.90:4873/vue-demi/-/vue-demi-0.13.11.tgz#7d90369bdae8974d87b1973564ad390182410d99"

View File

@ -1196,11 +1196,6 @@
"@types/conventional-commits-parser" "^5.0.0" "@types/conventional-commits-parser" "^5.0.0"
chalk "^5.3.0" chalk "^5.3.0"
"@fortawesome/fontawesome-free@^7.0.1":
version "7.2.0"
resolved "https://registry.npmmirror.com/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz#188c1053ce422ad1f934d7df242a973fcb89636d"
integrity sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==
"@gar/promisify@^1.0.1": "@gar/promisify@^1.0.1":
version "1.1.3" version "1.1.3"
resolved "http://10.23.10.90:4873/@gar%2fpromisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" resolved "http://10.23.10.90:4873/@gar%2fpromisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"

View File

@ -1,18 +1,13 @@
const eslintConfig = require('@gtff/tdesign-gt-vue/.eslintrc.js'); module.exports = {
root: true,
const projectRules = { extends: [],
'no-shadow': 0, rules: {
'import/no-cycle': 0, // 关闭所有校验
'prettier/prettier': [ "prettier/prettier": "off",
'error', "all": "off",
{ "no-undef": "off",
endOfLine: 'auto', "no-unused-vars": "off",
}, "stylelint/no-unknown-property": "off",
], "declaration-property-value-disallowed-list": "off"
}; }
eslintConfig.rules = { };
...eslintConfig.rules,
...projectRules,
};
module.exports = eslintConfig;

2
txw-mhzc-web/.npmrc Normal file
View File

@ -0,0 +1,2 @@
registry=http://10.23.10.90:4873/
strict-ssl=false

View File

@ -0,0 +1,4 @@
{
"defaultSeverity": "off",
"rules":[]
}

52670
txw-mhzc-web/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -92,10 +92,6 @@
"path": "cz-customizable" "path": "cz-customizable"
} }
}, },
"lint-staged": {
"src/**/*.{js,vue}": "yarn lint",
"src/**/*.{vue,js,scss,less,css,html}": "yarn lint:style"
},
"changelog": { "changelog": {
"emojis": true, "emojis": true,
"authorName": true, "authorName": true,

View File

@ -28,7 +28,7 @@ export default {
return fetchSso({ return fetchSso({
url: `${basurl}/gxzx/gxdt/gxxxList`, url: `${basurl}/gxzx/gxdt/gxxxList`,
method: 'post', method: 'post',
loading: true, // loading: true, // 组件自己管理 loading 状态
data: JSON.stringify(params), data: JSON.stringify(params),
}); });
}, },
@ -52,7 +52,7 @@ export default {
}); });
}, },
// 代码表查询tableName: fwlx/xqlx/sshy/ysfw/XZQH/bq/dw // 代码表查询tableName: fwlx/xqlx/sshy/ysfw/xzqh/bq/dw
dms2mc(tableName, params) { dms2mc(tableName, params) {
return fetchSso({ return fetchSso({
url: `${basurl}/yygl/cache/v1/list/${tableName}`, url: `${basurl}/yygl/cache/v1/list/${tableName}`,

View File

@ -13,13 +13,13 @@
</div> </div>
<!-- 主办单位 --> <!-- 主办单位 -->
<div class="footer-column"> <!-- <div class="footer-column">
<div class="footer-title">主办单位</div> <div class="footer-title">主办单位</div>
<div class="footer-links"> <div class="footer-links">
<div class="footer-link-item">宝山区数据局</div> <div class="footer-link-item">宝山区数据局</div>
<div class="footer-link-item">宝山区发改委</div> <div class="footer-link-item">宝山区发改委</div>
</div> </div>
</div> </div> -->
<!-- 运营单位 --> <!-- 运营单位 -->
<div class="footer-column"> <div class="footer-column">
@ -58,8 +58,10 @@
<!-- 下部版权信息 --> <!-- 下部版权信息 -->
<div class="footer-bottom"> <div class="footer-bottom">
<p class="copyright">{{ copyright }}</p> <!-- <p class="copyright">{{ copyright }}</p> -->
<p class="infrastructure">基础设施国家区块链网络基础底座上海枢纽</p> <p class="copyright">© 2025 可信碳信息网 版权所有</p>
<p class="infrastructure">技术支持上海市宝山区大数据中心</p>
<p class="infrastructure">基础设施国家区块链网络基础底座</p>
</div> </div>
</div> </div>
</footer> </footer>

View File

@ -90,7 +90,7 @@
</template> </template>
<script> <script>
import { logout, authorize } from '@/pages/index/api/login'; import { logout, authorize, init } from '@/pages/index/api/login';
import api from '@/pages/index/api/gxzx/index.js'; import api from '@/pages/index/api/gxzx/index.js';
export default { export default {
@ -139,8 +139,8 @@ export default {
divider: true, //线 divider: true, //线
needLogin: true, //访 needLogin: true, //访
clientId: 'client_id_tfwzx', clientId: 'client_id_tfwzx',
// iframeUrl: 'https://ctn-web-pre.lingshu.net/trustedCarbonQuery/index', // iframeUrl: 'https://ctn-web-pre.lingshu.net/trustedCarbonQuery/index', //
iframeUrl: 'https://ctn-web-pre.lingshu.net/trustedCarbonQuery/list?type=carbon-query', // // iframeUrl: 'https://ctn-web-pre.lingshu.net/trustedCarbonQuery/list?type=carbon-query', //
}, },
{ {
name: 'tsjfcg', name: 'tsjfcg',
@ -194,7 +194,6 @@ export default {
value: 'tfwsc', value: 'tfwsc',
content: '碳服务市场', content: '碳服务市场',
divider: true, divider: true,
parentName: 'fwsc',
}, },
{ {
name: 'tjrsc', name: 'tjrsc',
@ -210,7 +209,6 @@ export default {
value: 'txqsc', value: 'txqsc',
content: '碳需求市场', content: '碳需求市场',
divider: true, divider: true,
parentName: 'fwsc',
}, },
{ {
name: 'tsjsc', name: 'tsjsc',
@ -218,8 +216,14 @@ export default {
value: 'tsjsc', value: 'tsjsc',
content: '碳数据市场', content: '碳数据市场',
divider: true, divider: true,
parentName: 'fwsc', },
} // {
// name: 'fwscsjlbc',
// title: '',
// value: 'fwscsjlbc',
// content: '',
// divider: true,
// }
] ]
}, },
{ {
@ -259,22 +263,10 @@ export default {
const sfdl = window.sessionStorage.getItem('sfdl'); const sfdl = window.sessionStorage.getItem('sfdl');
if (sfdl) { if (sfdl) {
this.loginFlag = true; this.loginFlag = true;
this.getWdxxCount(); // this.getWdxxCount();
} else { } else {
this.loginFlag = false; this.loginFlag = false;
} }
//
this.updateCurPageByRoute();
},
watch: {
//
$route: {
handler(newRoute) {
this.updateCurPageByRoute();
},
immediate: true,
},
}, },
beforeUnmount() { }, beforeUnmount() { },
methods: { methods: {
@ -320,12 +312,6 @@ export default {
}, },
// //
handleDropdownClick(menu) { handleDropdownClick(menu) {
// parentName使curPage
if (menu.parentName) {
this.curPage = menu.parentName;
} else {
this.curPage = menu.name;
}
this.gotoIfreamPage(menu); // this.gotoIfreamPage(menu); //
}, },
@ -357,8 +343,7 @@ export default {
this.closeMobileMenu(); this.closeMobileMenu();
let iframeUrl = menu.iframeUrl; let iframeUrl = menu.iframeUrl;
if (iframeUrl) { if (iframeUrl) {
//login.jsauthorize //login.jsauthorize
//使iframeUrlSSO Cookie
this.$emit('gotoIfreamPage', iframeUrl); this.$emit('gotoIfreamPage', iframeUrl);
} else { } else {
this.$emit('gotoPage', this.curPage); this.$emit('gotoPage', this.curPage);
@ -396,6 +381,7 @@ export default {
}, },
goyhzx() { goyhzx() {
this.curPage = ""; //navactive
this.closeMobileMenu(); this.closeMobileMenu();
this.$router.push("/yhzx/gzt") this.$router.push("/yhzx/gzt")
// window.location.href = `/view/mhzc/yhzx`; // window.location.href = `/view/mhzc/yhzx`;
@ -477,18 +463,18 @@ export default {
<style lang="css" scoped> <style lang="css" scoped>
.nav-box { .nav-box {
position: fixed; position: fixed;
top: 0; top: 0px;
z-index: 9999;
display: grid;
width: 100%; width: 100%;
background: #009a29;
margin: 0 auto; margin: 0 auto;
color: #fff; display: grid;
background: #009a29;
grid-template-columns: 1fr 2fr 1fr; grid-template-columns: 1fr 2fr 1fr;
place-items: center; place-items: center;
color: #fff;
z-index: 9999;
} }
.logo-box { .logo-box {
text-align: center; text-align: center;
@ -501,55 +487,55 @@ export default {
.option-box { .option-box {
display: flex; display: flex;
height: 64px;
font-family: PingFang SC;
font-size: 16px;
font-style: regular;
font-weight: 400;
letter-spacing: 0%;
text-align: center;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
text-align: center;
gap: 10px; gap: 10px;
leading-trim: none; height: 64px;
font-family: PingFang SC;
font-weight: 400;
font-style: Regular;
font-size: 16px;
leading-trim: NONE;
letter-spacing: 0%;
} }
.option-box .gzt { .option-box .gzt {
display: flex;
padding: 10px; padding: 10px;
text-align: center; text-align: center;
cursor: pointer; cursor: pointer;
background: rgba(255, 255, 255, 0.3); background: rgba(255, 255, 255, 0.3);
border-radius: 6px; display: flex;
justify-content: space-around; justify-content: space-around;
align-items: center; align-items: center;
gap: 10px; gap: 10px;
border-radius: 6px;
} }
.menu-box { .menu-box {
display: grid;
width: 100%; width: 100%;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
height: 64px; height: 64px;
font-size: 16px; font-size: 16px;
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
gap: 10px; gap: 10px;
} }
.menu-title { .menu-title {
display: flex;
width: 96px; width: 96px;
height: 64px; height: 64px;
line-height: 24px;
text-align: center; text-align: center;
cursor: pointer; line-height: 24px;
display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
cursor: pointer;
} }
.meun-title-active { .meun-title-active {
background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.15) 100%); background: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.15) 100%);
border-bottom: 2px solid #fff; border-bottom: 2px solid #ffffff;
} }
.meun-title-disable { .meun-title-disable {

View File

@ -20,7 +20,7 @@ const baseRoutes = [
}, },
]; ];
routes.push(...baseRoutes);
const mainRoutes = { const mainRoutes = {
path: '/', path: '/',

View File

@ -185,7 +185,7 @@ export default {
}, },
async fwfwoptionsSearch() { async fwfwoptionsSearch() {
try { try {
const res = await api.dms2mc('XZQH', {}); const res = await api.dms2mc('xzqh', {});
this.fwfwOptions = res.data || []; this.fwfwOptions = res.data || [];
} catch (error) { } catch (error) {
this.fwfwOptions = []; this.fwfwOptions = [];

View File

@ -191,7 +191,7 @@ export default {
}, },
async fwfwoptionsSearch() { async fwfwoptionsSearch() {
try { try {
const res = await api.dms2mc('XZQH', {}); const res = await api.dms2mc('xzqh', {});
this.fwfwOptions = res.data || []; this.fwfwOptions = res.data || [];
} catch (error) { } catch (error) {
this.fwfwOptions = []; this.fwfwOptions = [];

View File

@ -33,8 +33,6 @@
<div class="filter-section"> <div class="filter-section">
<div class="filter-title">内容搜索</div> <div class="filter-title">内容搜索</div>
<t-input v-model="filter.nr" placeholder="请输入关键词" @enter="onSearch" /> <t-input v-model="filter.nr" placeholder="请输入关键词" @enter="onSearch" />
</div>
<div class="filter-buttons"> <div class="filter-buttons">
<t-button theme="primary" @click="onSearch">查询</t-button> <t-button theme="primary" @click="onSearch">查询</t-button>
<t-button theme="default" @click="onReset">重置</t-button> <t-button theme="default" @click="onReset">重置</t-button>
@ -45,6 +43,8 @@
<div class="filter-section"> <div class="filter-section">
<t-checkbox v-model="filter.zzsscx" @change="onSearch">只展示收藏项</t-checkbox> <t-checkbox v-model="filter.zzsscx" @change="onSearch">只展示收藏项</t-checkbox>
</div> </div>
</div>
<!-- 服务类型 --> <!-- 服务类型 -->
<div class="filter-section"> <div class="filter-section">
@ -57,8 +57,22 @@
<!-- 服务企业 --> <!-- 服务企业 -->
<div class="filter-section"> <div class="filter-section">
<div class="filter-title">服务企业</div> <div class="filter-title">服务企业</div>
<div class="filter-options enterprise-options"> <t-input
<t-checkbox-group v-model="filter.qyuuids" :options="qyOptions" @change="onSearch" /> v-model="qySearchKeyword"
placeholder="搜索企业名称"
clearable
class="qy-search-input"
@change="filterQyOptions"
>
<template #prefix-icon>
<SearchIcon />
</template>
</t-input>
<div class="filter-options enterprise-options" v-if="qyFilteredOptions.length > 0">
<t-checkbox-group v-model="filter.qyuuids" :options="qyFilteredOptions" @change="onSearch" />
</div>
<div class="Qy-options-empty" v-else>
<span>未找到匹配企业</span>
</div> </div>
</div> </div>
</div> </div>
@ -203,7 +217,7 @@
</template> </template>
<script> <script>
import { LocationIcon } from 'tdesign-icons-vue'; import { LocationIcon, SearchIcon } from 'tdesign-icons-vue';
import NewNav from '@/pages/index/components/new-nav/index.vue'; import NewNav from '@/pages/index/components/new-nav/index.vue';
import Footer from '@/pages/index/components/footer/index.vue'; import Footer from '@/pages/index/components/footer/index.vue';
import BreadcrumbNav from '@/pages/index/components/breadcrumb/index.vue'; import BreadcrumbNav from '@/pages/index/components/breadcrumb/index.vue';
@ -218,6 +232,7 @@ export default {
BreadcrumbNav, BreadcrumbNav,
FwscPublish, FwscPublish,
LocationIcon, LocationIcon,
SearchIcon,
}, },
data() { data() {
return { return {
@ -240,6 +255,10 @@ export default {
qyOptions: [], qyOptions: [],
// //
allQyOptions: [], allQyOptions: [],
//
qySearchKeyword: '',
//
qyFilteredOptions: [],
// //
cardList: [], cardList: [],
// //
@ -308,26 +327,44 @@ export default {
}); });
this.allQyOptions = options || []; this.allQyOptions = options || [];
this.qyOptions = options || []; this.qyOptions = options || [];
this.qyFilteredOptions = options || [];
} catch (error) { } catch (error) {
this.allQyOptions = []; this.allQyOptions = [];
this.qyOptions = []; this.qyOptions = [];
this.qyFilteredOptions = [];
} }
}, },
// //
async onFwlxChange() { async onFwlxChange() {
this.qySearchKeyword = '';
if (this.filter.fwlxjh.length > 0) { if (this.filter.fwlxjh.length > 0) {
try { try {
const res = await api.getQyuuidsByBq({ fwlxjh: this.filter.fwlxjh }); const res = await api.getQyuuidsByBq({ fwlxjh: this.filter.fwlxjh });
const selectedCodes = res.data || []; const selectedCodes = res.data || [];
this.qyOptions = this.allQyOptions.filter((q) => selectedCodes.includes(q.value)); this.qyOptions = this.allQyOptions.filter((q) => selectedCodes.includes(q.value));
this.qyFilteredOptions = this.qyOptions;
} catch (error) { } catch (error) {
this.qyOptions = this.allQyOptions; this.qyOptions = this.allQyOptions;
this.qyFilteredOptions = this.allQyOptions;
} }
} else { } else {
this.qyOptions = this.allQyOptions; this.qyOptions = this.allQyOptions;
this.qyFilteredOptions = this.allQyOptions;
} }
this.onSearch(); this.onSearch();
}, },
//
filterQyOptions() {
console.log('this.qySearchKeyword', this.qySearchKeyword);
if (!this.qySearchKeyword) {
this.qyFilteredOptions = this.qyOptions;
} else {
const keyword = this.qySearchKeyword.toLowerCase();
this.qyFilteredOptions = this.qyOptions.filter((q) =>
q.label.toLowerCase().includes(keyword)
);
}
},
// //
async searchList() { async searchList() {
this.loading = true; this.loading = true;
@ -338,9 +375,8 @@ export default {
...this.filter, ...this.filter,
...this.page, ...this.page,
}; };
if (prame.scbz !== undefined) { // Y=, N=
prame.scbz = this.filter.zzsscx ? 'Y' : ''; prame.scbz = this.filter.zzsscx ? 'Y' : 'N';
}
const { data } = await api.gxxxList(prame); const { data } = await api.gxxxList(prame);
if (data.records) { if (data.records) {
data.records.map((item) => { data.records.map((item) => {
@ -372,7 +408,9 @@ export default {
nr: '', nr: '',
zzsscx: false, zzsscx: false,
}; };
this.qySearchKeyword = '';
this.qyOptions = this.allQyOptions; this.qyOptions = this.allQyOptions;
this.qyFilteredOptions = this.allQyOptions;
this.page.pageNo = 1; this.page.pageNo = 1;
this.searchList(); this.searchList();
}, },
@ -665,6 +703,17 @@ export default {
} }
} }
.qy-search-input {
margin-bottom: 12px;
}
.Qy-options-empty {
padding: 16px 0;
font-size: 14px;
color: #999;
text-align: center;
}
.filter-buttons { .filter-buttons {
display: flex; display: flex;
gap: 8px; gap: 8px;

View File

@ -112,48 +112,48 @@ export default {
{ label: '社会性数据', value: 'social' } { label: '社会性数据', value: 'social' }
], ],
cardList: [ cardList: [
{
id: 1,
name: '宝山绿色低碳数据创新实验室',
description: '汇聚全国优质第三方服务机构,提供从核算到认证的全链条专业服务。',
tags: ['公共数据', '社会性数据'],
price: '免费'
},
{ {
id: 2, id: 2,
name: 'HiQLCD数据库', name: 'HiQLCD数据库',
description: '汇聚全国优质第三方服务机构,提供从核算到认证的全链条专业服务。', description: '覆盖生命周期碳足迹评估所需的基础数据,支持多种排放因子查询与自定义导入。',
tags: ['商业数据'], tags: ['商业数据'],
price: '付费' price: '付费'
}, },
{ {
id: 3, id: 3,
name: '天工数据库', name: '天工数据库',
description: '汇聚全国优质第三方服务机构,提供从核算到认证的全链条专业服务。', description: '整合工业制造全流程能耗与排放因子,支持实时监测与历史数据追溯分析。',
tags: ['公益数据'], tags: ['公益数据'],
price: '免费' price: '免费'
}, },
{ {
id: 4, id: 4,
name: 'ecoinvent数据库', name: 'ecoinvent数据库',
description: '汇聚全国优质第三方服务机构,提供从核算到认证的全链条专业服务。', description: '国际权威生命周期评价数据库收录全球超过18000种过程数据与排放因子。',
tags: ['商业数据'], tags: ['商业数据'],
price: '付费' price: '付费'
}, },
{ {
id: 5, id: 5,
name: 'ecoinvent数据库', name: 'ecoinvent数据库',
description: '汇聚全国优质第三方服务机构,提供从核算到认证的全链条专业服务。', description: '国际权威生命周期评价数据库收录全球超过18000种过程数据与排放因子。',
tags: ['商业数据'], tags: ['商业数据'],
price: '付费' price: '付费'
}, },
{ {
id: 6, id: 6,
name: '天工数据库', name: '天工数据库',
description: '汇聚全国优质第三方服务机构,提供从核算到认证的全链条专业服务。', description: '整合工业制造全流程能耗与排放因子,支持实时监测与历史数据追溯分析。',
tags: ['公益数据'], tags: ['公益数据'],
price: '免费' price: '免费'
} },
{
id: 1,
name: '宝山绿色低碳数据创新实验室',
description: '聚焦区域低碳发展数据汇聚与分析,提供碳排放核算模型与可视化报告。',
tags: ['公共数据', '社会性数据'],
price: '免费'
},
], ],
// //
filterCollapsed: true, filterCollapsed: true,

View File

@ -287,7 +287,7 @@ export default {
}, },
async fwfwoptionsSearch() { async fwfwoptionsSearch() {
try { try {
const res = await api.dms2mc('XZQH', {}); const res = await api.dms2mc('xzqh', {});
this.fwfwOptions = res.data || []; this.fwfwOptions = res.data || [];
} catch (error) { } catch (error) {
this.fwfwOptions = []; this.fwfwOptions = [];

View File

@ -5,7 +5,7 @@
<div style="height: 100%"> <div style="height: 100%">
<template> <template>
<div style="height: 100%" class="htglMenu"> <div style="height: 100%" class="htglMenu">
<t-menu style="width: 220px; background: #fff" :defaultValue="defaultValue" :collapsed="collapsed" :defaultExpanded="expanded" @change="gotoPage"> <t-menu style="width: 220px; background: #fff" v-model="activeMenuId" :collapsed="collapsed" :defaultExpanded="expanded" @change="gotoPage">
<div class="title">用户中心</div> <div class="title">用户中心</div>
<!-- 循环实现 --> <!-- 循环实现 -->
<template v-for="item in cdList"> <template v-for="item in cdList">
@ -121,10 +121,16 @@ export default {
title: '绿色交易', title: '绿色交易',
icon: 'user', icon: 'user',
name: 'lsjy', name: 'lsjy',
}, {
id: 'zljggl',
title: '质证结果管理',
icon: 'user',
name: 'zljggl',
iframeUrl: "https://ctn-web-pre.lingshu.net/proof-result-mgt?type=carbon-certify",
}, },
{ {
id: 'cunzhengjilu', id: 'cunzhengjilu',
title: '存证记录', title: '存证记录管理',
icon: 'user', icon: 'user',
name: 'cunzhengjilu', name: 'cunzhengjilu',
iframeUrl: "https://ctn-web-pre.lingshu.net/cert-record-mgt", iframeUrl: "https://ctn-web-pre.lingshu.net/cert-record-mgt",
@ -136,7 +142,7 @@ export default {
iframeUrl: "https://ctn-web-pre.lingshu.net/hosting-record-mgt", iframeUrl: "https://ctn-web-pre.lingshu.net/hosting-record-mgt",
}, { }, {
id: 'chazhengjilu', id: 'chazhengjilu',
title: '查证记录', title: '查证记录管理',
icon: 'user', icon: 'user',
name: 'chazhengjilu', name: 'chazhengjilu',
iframeUrl: "https://ctn-web-pre.lingshu.net/query-record-mgt", iframeUrl: "https://ctn-web-pre.lingshu.net/query-record-mgt",
@ -147,19 +153,26 @@ export default {
zljgglurl: 'https://ctn-web-pre.lingshu.net/proof-result-mgt?type=carbon-certify', zljgglurl: 'https://ctn-web-pre.lingshu.net/proof-result-mgt?type=carbon-certify',
iframeUrl: "", iframeUrl: "",
activeMenuId: "gzt",
}; };
}, },
created() { created() {
},
activated() {
console.log("glxtSy.vue,created==>", this.$route)
// this.initView(); // this.initView();
// const activeCompo = this.$route.query.activeCompo; let cdId = this.cdList[0].id;
// if (activeCompo) { const activeCompo = this.$route.query.activeCompo;
if (activeCompo) {
// this.changeHandler(activeCompo); // this.changeHandler(activeCompo);
// } cdId = activeCompo;
}
this.gotoPage(this.cdList[0].id);
this.activeMenuId = cdId;
this.gotoPage(cdId);
}, },
methods: { methods: {
gotoPage(menuId) { gotoPage(menuId) {
@ -194,9 +207,12 @@ export default {
if (iframeUrl) { if (iframeUrl) {
this.iframeUrl = iframeUrl; this.iframeUrl = iframeUrl;
} else { } else {
this.iframeUrl = "";
this.$nextTick(() => {
this.$router.push({ this.$router.push({
path: "/yhzx/" + menu.name path: "/yhzx/" + menu.name
}) })
})
} }
}, },

View File

@ -9,11 +9,11 @@
@click="handleClick(item.to)" @click="handleClick(item.to)"
> >
<div class="item-icon" :style="{ background: item.bgColor, color: item.color }"> <div class="item-icon" :style="{ background: item.bgColor, color: item.color }">
<t-icon :name="item.icon" /> <component :is="getIconComponent(item.icon)" />
</div> </div>
<span class="item-label">{{ item.label }}</span> <span class="item-label">{{ item.label }}</span>
<div class="item-arrow"> <div class="item-arrow">
<t-icon name="arrow-right" /> <ArrowRightIcon />
</div> </div>
</button> </button>
</div> </div>
@ -21,8 +21,24 @@
</template> </template>
<script> <script>
import { MailIcon, UserIcon, EditIcon, LockOnIcon, ArrowRightIcon } from 'tdesign-icons-vue';
const iconMap = {
mail: MailIcon,
user: UserIcon,
edit: EditIcon,
'lock-on': LockOnIcon,
};
export default { export default {
name: 'AccountShortcuts', name: 'AccountShortcuts',
components: {
MailIcon,
UserIcon,
EditIcon,
LockOnIcon,
ArrowRightIcon,
},
data() { data() {
return { return {
shortcuts: [ shortcuts: [
@ -34,6 +50,9 @@ export default {
}; };
}, },
methods: { methods: {
getIconComponent(name) {
return iconMap[name] || MailIcon;
},
handleClick(to) { handleClick(to) {
this.$router.push(to); this.$router.push(to);
}, },

View File

@ -2,7 +2,7 @@
<div class="enterprise-cert"> <div class="enterprise-cert">
<div class="cert-header"> <div class="cert-header">
<div class="cert-icon"> <div class="cert-icon">
<t-icon name="user" /> <UserIcon />
</div> </div>
<div class="cert-title"> <div class="cert-title">
<h3>企业认证</h3> <h3>企业认证</h3>
@ -34,7 +34,7 @@
<div class="cert-actions"> <div class="cert-actions">
<button class="cert-btn" @click="handleClick"> <button class="cert-btn" @click="handleClick">
<span>{{ certData.qymc ? '查看详情' : '立即认证' }}</span> <span>{{ certData.qymc ? '查看详情' : '立即认证' }}</span>
<t-icon name="arrow-right" /> <ArrowRightIcon />
</button> </button>
</div> </div>
</div> </div>
@ -43,9 +43,14 @@
<script> <script>
import api from '@/pages/index/api/gxzx/index.js'; import api from '@/pages/index/api/gxzx/index.js';
import { UserIcon, ArrowRightIcon } from 'tdesign-icons-vue';
export default { export default {
name: 'EnterpriseCert', name: 'EnterpriseCert',
components: {
UserIcon,
ArrowRightIcon,
},
data() { data() {
return { return {
certData: {}, certData: {},

View File

@ -2,7 +2,7 @@
<div class="policy-news"> <div class="policy-news">
<div class="panel-header"> <div class="panel-header">
<div class="header-icon"> <div class="header-icon">
<t-icon name="notification" /> <NotificationIcon />
</div> </div>
<h3 class="header-title">{{ title }}</h3> <h3 class="header-title">{{ title }}</h3>
<span class="header-tag">政策</span> <span class="header-tag">政策</span>
@ -31,15 +31,21 @@
<div class="panel-footer"> <div class="panel-footer">
<span class="more-link"> <span class="more-link">
查看全部 查看全部
<t-icon name="arrow-right" /> <ArrowRightIcon />
</span> </span>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { NotificationIcon, ArrowRightIcon } from 'tdesign-icons-vue';
export default { export default {
name: 'PolicyNews', name: 'PolicyNews',
components: {
NotificationIcon,
ArrowRightIcon,
},
props: { props: {
title: { title: {
type: String, type: String,
@ -203,14 +209,15 @@ export default {
} }
.item-title { .item-title {
display: box; display: -webkit-box;
overflow: hidden; overflow: hidden;
font-size: 13px; font-size: 13px;
line-height: 1.6; line-height: 1.6;
color: @text-dark; color: @text-dark;
box-orient: vertical; -webkit-box-orient: vertical;
transition: color 0.25s ease;
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
line-clamp: 2;
transition: color 0.25s ease;
} }
.item-meta { .item-meta {

View File

@ -10,12 +10,12 @@
> >
<div class="item-icon-wrap"> <div class="item-icon-wrap">
<div class="item-icon" :style="{ background: action.bgColor, color: action.color }"> <div class="item-icon" :style="{ background: action.bgColor, color: action.color }">
<t-icon :name="action.icon" /> <component :is="getIconComponent(action.icon)" />
</div> </div>
</div> </div>
<span class="item-label">{{ action.label }}</span> <span class="item-label">{{ action.label }}</span>
<div class="item-arrow"> <div class="item-arrow">
<t-icon name="arrow-right" /> <ArrowRightIcon />
</div> </div>
</button> </button>
</div> </div>
@ -23,8 +23,24 @@
</template> </template>
<script> <script>
import { UploadIcon, CloudUploadIcon, EditIcon, BulletpointIcon, ArrowRightIcon } from 'tdesign-icons-vue';
const iconMap = {
upload: UploadIcon,
'cloud-upload': CloudUploadIcon,
edit: EditIcon,
bulletpoint: BulletpointIcon,
};
export default { export default {
name: 'QuickActions', name: 'QuickActions',
components: {
UploadIcon,
CloudUploadIcon,
EditIcon,
BulletpointIcon,
ArrowRightIcon,
},
data() { data() {
return { return {
actions: [ actions: [
@ -36,6 +52,9 @@ export default {
}; };
}, },
methods: { methods: {
getIconComponent(name) {
return iconMap[name] || UploadIcon;
},
handleClick(to) { handleClick(to) {
this.$router.push(to); this.$router.push(to);
}, },

View File

@ -4,7 +4,7 @@
<div class="card-inner"> <div class="card-inner">
<div class="card-icon-wrap" :style="iconWrapStyle"> <div class="card-icon-wrap" :style="iconWrapStyle">
<div class="icon-inner" :style="iconInnerStyle"> <div class="icon-inner" :style="iconInnerStyle">
<t-icon :name="iconName" /> <component :is="iconComponent" />
</div> </div>
</div> </div>
<div class="card-content"> <div class="card-content">
@ -20,8 +20,23 @@
</template> </template>
<script> <script>
import { UploadIcon, SearchIcon, SwapIcon, MailIcon } from 'tdesign-icons-vue';
const iconMap = {
upload: UploadIcon,
search: SearchIcon,
swap: SwapIcon,
mail: MailIcon,
};
export default { export default {
name: 'StatsCard', name: 'StatsCard',
components: {
UploadIcon,
SearchIcon,
SwapIcon,
MailIcon,
},
props: { props: {
title: String, title: String,
count: [String, Number], count: [String, Number],
@ -45,6 +60,9 @@ export default {
color: this.borderColor !== 'transparent' ? this.borderColor : '#666', color: this.borderColor !== 'transparent' ? this.borderColor : '#666',
}; };
}, },
iconComponent() {
return iconMap[this.iconName] || UploadIcon;
},
}, },
methods: { methods: {
lightenColor(hex) { lightenColor(hex) {

View File

@ -82,7 +82,7 @@
<div class="panel-card"> <div class="panel-card">
<div class="panel-header"> <div class="panel-header">
<div class="header-icon"> <div class="header-icon">
<t-icon name="app" /> <AppIcon />
</div> </div>
<div class="header-text"> <div class="header-text">
<h2 class="panel-title">常用功能</h2> <h2 class="panel-title">常用功能</h2>
@ -98,7 +98,7 @@
<div class="panel-card account-panel"> <div class="panel-card account-panel">
<div class="panel-header"> <div class="panel-header">
<div class="header-icon header-icon--account"> <div class="header-icon header-icon--account">
<t-icon name="setting" /> <SettingIcon />
</div> </div>
<div class="header-text"> <div class="header-text">
<h2 class="panel-title">账号管理</h2> <h2 class="panel-title">账号管理</h2>
@ -121,6 +121,7 @@
</template> </template>
<script> <script>
import { AppIcon, SettingIcon } from 'tdesign-icons-vue';
import StatsCard from './components/StatsCard.vue'; import StatsCard from './components/StatsCard.vue';
import QuickActions from './components/QuickActions.vue'; import QuickActions from './components/QuickActions.vue';
import PolicyNews from './components/PolicyNews.vue'; import PolicyNews from './components/PolicyNews.vue';
@ -130,6 +131,8 @@ import EnterpriseCert from './components/EnterpriseCert.vue';
export default { export default {
name: 'GztIndex', name: 'GztIndex',
components: { components: {
AppIcon,
SettingIcon,
StatsCard, StatsCard,
QuickActions, QuickActions,
PolicyNews, PolicyNews,

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
<template> <template>
<div> <div>
<Nav @gotoIfreamPage="gotoIfreamPage" @gotoPage="gotoPage" /> <Nav @gotoIfreamPage="gotoIfreamPage" @gotoPage="gotoPage" />
<div :style="{ 'height': documentClientHeight-64 + 'px' ,'margin-top':'64px'}"> <div ref="contentWrap" :style="{ 'height': documentClientHeight-65 + 'px' ,'margin-top':'64px' ,'overflow':'auto'}">
<iframe v-if="iframeUrl" :src="iframeUrl" width="100%" height="100%" frameborder="0" scrolling="yes"> <iframe v-if="iframeUrl" :src="iframeUrl" width="100%" height="100%" frameborder="0" scrolling="yes">
</iframe> </iframe>
<keep-alive v-else> <keep-alive v-else>
@ -24,6 +24,12 @@ export default {
components: { components: {
Nav, Nav,
}, },
watch: {
$route() {
//
this.$refs.contentWrap && (this.$refs.contentWrap.scrollTop = 0);
},
},
computed: { computed: {
// documentClientHeight: { // documentClientHeight: {
// get() { // get() {
@ -49,10 +55,16 @@ export default {
}, },
methods: { methods: {
gotoPage(name) { gotoPage(name) {
this.$router.push({ name }) this.iframeUrl = "";
this.$nextTick(() => {
this.$router.push({
path: "/" + name
})
});
// this.$router.replace({ name: name, force: true })
// // this.$router.replace({ name: name, force: true })
// alert(name)
// window.location.href = name // window.location.href = name
}, },

View File

@ -33,7 +33,7 @@ export default {
// { title: '上海市宝山区发改委', href: '#' }, // { title: '上海市宝山区发改委', href: '#' },
// { title: '上海市宝山区生态环境局', href: '#' }, // { title: '上海市宝山区生态环境局', href: '#' },
], ],
copyright: '© 2025 可信碳信息网 版权所有 | 主办单位:上海市宝山区大数据中心', copyright: '© 2025 可信碳信息网 版权所有 | 技术支持:上海市宝山区大数据中心',
hyztList: [ hyztList: [
{ {
title: '钢铁行业', title: '钢铁行业',

View File

@ -244,8 +244,8 @@ module.exports = {
terserOptions: { terserOptions: {
compress: { compress: {
warnings: false, warnings: false,
drop_console: true, drop_console: false,
drop_debugger: true, drop_debugger: false,
}, },
}, },
}), }),
@ -266,7 +266,8 @@ module.exports = {
devServer: { devServer: {
port: devServerPort, port: devServerPort,
host: '0.0.0.0', host: '0.0.0.0',
contentBase: './dist', // 开发时勿用 ./dist会与历史 npm run build 产物混用history 子路径刷新易命中旧 HTML/JS
contentBase: path.resolve(__dirname, 'public'),
publicPath: process.env.VUE_APP_ROUTER_BASE, publicPath: process.env.VUE_APP_ROUTER_BASE,
https: process.env.VUE_APP_PROTOCOL_HTTPS === 'true', https: process.env.VUE_APP_PROTOCOL_HTTPS === 'true',
compress: false, compress: false,
@ -281,21 +282,27 @@ module.exports = {
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS', 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, PATCH, OPTIONS',
'Access-Control-Allow-Headers': 'X-Requested-With, content-type, Authorization', 'Access-Control-Allow-Headers': 'X-Requested-With, content-type, Authorization',
}, },
// Vue CLI prepareProxy 用 pathname.match(代理键) 判断;键写 '/mhzc' 会变成匹配路径里任意位置的 /mhzc
// 会误伤 SPA 路由 /view/mhzc/...,刷新时整页请求被转发到后端导致 Proxy error。必须用 ^ 限定为路径前缀。
proxy: { proxy: {
'/sso': { '^/sso': {
target: 'http://carbon.liantu.tech', target: 'http://carbon.liantu.tech',
// target: 'http://10.23.20.13:94/',
changeOrigin: true, changeOrigin: true,
}, },
'^/mhzc': { '^/mhzc': {
target: 'http://carbon.liantu.tech', target: 'http://carbon.liantu.tech',
// target: 'http://10.23.20.13:94/',
changeOrigin: true, changeOrigin: true,
}, },
'^/gxzx': { '^/gxzx': {
target: 'http://carbon.liantu.tech', target: 'http://carbon.liantu.tech',
// target: 'http://10.23.20.13:94/',
changeOrigin: true, changeOrigin: true,
}, },
'^/yygl': { '^/yygl': {
target: 'http://carbon.liantu.tech', target: 'http://carbon.liantu.tech',
// target: 'http://10.23.20.13:94/',
changeOrigin: true, changeOrigin: true,
}, },
}, },

File diff suppressed because it is too large Load Diff

22112
txw-tzzx-web/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1196,11 +1196,6 @@
"@types/conventional-commits-parser" "^5.0.0" "@types/conventional-commits-parser" "^5.0.0"
chalk "^5.3.0" chalk "^5.3.0"
"@fortawesome/fontawesome-free@^7.0.1":
version "7.2.0"
resolved "https://registry.npmmirror.com/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz#188c1053ce422ad1f934d7df242a973fcb89636d"
integrity sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==
"@gar/promisify@^1.0.1": "@gar/promisify@^1.0.1":
version "1.1.3" version "1.1.3"
resolved "http://10.23.10.90:4873/@gar%2fpromisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" resolved "http://10.23.10.90:4873/@gar%2fpromisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"

View File

@ -1196,11 +1196,6 @@
"@types/conventional-commits-parser" "^5.0.0" "@types/conventional-commits-parser" "^5.0.0"
chalk "^5.3.0" chalk "^5.3.0"
"@fortawesome/fontawesome-free@^7.0.1":
version "7.2.0"
resolved "https://registry.npmmirror.com/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz#188c1053ce422ad1f934d7df242a973fcb89636d"
integrity sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==
"@gar/promisify@^1.0.1": "@gar/promisify@^1.0.1":
version "1.1.3" version "1.1.3"
resolved "http://10.23.10.90:4873/@gar%2fpromisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" resolved "http://10.23.10.90:4873/@gar%2fpromisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"

View File

@ -1196,11 +1196,6 @@
"@types/conventional-commits-parser" "^5.0.0" "@types/conventional-commits-parser" "^5.0.0"
chalk "^5.3.0" chalk "^5.3.0"
"@fortawesome/fontawesome-free@^7.0.1":
version "7.2.0"
resolved "https://registry.npmmirror.com/@fortawesome/fontawesome-free/-/fontawesome-free-7.2.0.tgz#188c1053ce422ad1f934d7df242a973fcb89636d"
integrity sha512-3DguDv/oUE+7vjMeTSOjCSG+KeawgVQOHrKRnvUuqYh1mfArrh7s+s8hXW3e4RerBA1+Wh+hBqf8sJNpqNrBWg==
"@gar/promisify@^1.0.1": "@gar/promisify@^1.0.1":
version "1.1.3" version "1.1.3"
resolved "http://10.23.10.90:4873/@gar%2fpromisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" resolved "http://10.23.10.90:4873/@gar%2fpromisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"