Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 012c48c5dd | |||
| b3a9601b5f | |||
| 5fff9b86e1 | |||
| 2d009323e4 | |||
|
|
a2c31635dd | ||
| d7db320ba2 | |||
| 331bb97db5 | |||
| 56172e39e3 | |||
|
|
d301ad5a9c | ||
|
|
4229d445f9 | ||
|
|
d456209b2a | ||
|
|
b5dbf326cb | ||
|
|
f4a83c8f9a |
55
.gitignore
vendored
55
.gitignore
vendored
@ -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
|
||||||
|
|||||||
@ -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"
|
||||||
|
|||||||
@ -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"
|
||||||
|
|||||||
@ -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
2
txw-mhzc-web/.npmrc
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
registry=http://10.23.10.90:4873/
|
||||||
|
strict-ssl=false
|
||||||
4
txw-mhzc-web/.stylelintrc.json
Normal file
4
txw-mhzc-web/.stylelintrc.json
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"defaultSeverity": "off",
|
||||||
|
"rules":[]
|
||||||
|
}
|
||||||
52670
txw-mhzc-web/package-lock.json
generated
Normal file
52670
txw-mhzc-web/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -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,
|
||||||
|
|||||||
@ -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}`,
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -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.js内的authorize方法(如果需要的话)
|
//调用login.js内的authorize方法
|
||||||
//这里直接使用iframeUrl,外部系统会通过SSO 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 = ""; //进入工作台之后:nav菜单取消active
|
||||||
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 {
|
||||||
|
|||||||
@ -20,7 +20,7 @@ const baseRoutes = [
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
routes.push(...baseRoutes);
|
||||||
|
|
||||||
const mainRoutes = {
|
const mainRoutes = {
|
||||||
path: '/',
|
path: '/',
|
||||||
|
|||||||
@ -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 = [];
|
||||||
|
|||||||
@ -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 = [];
|
||||||
|
|||||||
@ -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;
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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 = [];
|
||||||
|
|||||||
@ -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
|
||||||
})
|
})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@ -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);
|
||||||
},
|
},
|
||||||
|
|||||||
@ -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: {},
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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);
|
||||||
},
|
},
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
@ -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
@ -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
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@ -33,7 +33,7 @@ export default {
|
|||||||
// { title: '上海市宝山区发改委', href: '#' },
|
// { title: '上海市宝山区发改委', href: '#' },
|
||||||
// { title: '上海市宝山区生态环境局', href: '#' },
|
// { title: '上海市宝山区生态环境局', href: '#' },
|
||||||
],
|
],
|
||||||
copyright: '© 2025 可信碳信息网 版权所有 | 主办单位:上海市宝山区大数据中心',
|
copyright: '© 2025 可信碳信息网 版权所有 | 技术支持:上海市宝山区大数据中心',
|
||||||
hyztList: [
|
hyztList: [
|
||||||
{
|
{
|
||||||
title: '钢铁行业',
|
title: '钢铁行业',
|
||||||
|
|||||||
@ -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,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
22727
txw-mhzc-web/yarn.lock
22727
txw-mhzc-web/yarn.lock
File diff suppressed because it is too large
Load Diff
22112
txw-tzzx-web/package-lock.json
generated
Normal file
22112
txw-tzzx-web/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -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"
|
||||||
|
|||||||
@ -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"
|
||||||
|
|||||||
@ -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"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user