From 00c134c055f106a26326a21bc1283cb70cf8c5b9 Mon Sep 17 00:00:00 2001 From: dingcui Date: Fri, 26 Apr 2024 10:12:45 +0800 Subject: [PATCH] =?UTF-8?q?feat(4.26):=E6=95=B0=E5=AD=97=E6=9C=AA=E6=9D=A5?= =?UTF-8?q?=E5=B3=B0=E4=BC=9A=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- digital-future-summit/.browserslistrc | 12 + digital-future-summit/.editorconfig | 14 + digital-future-summit/.eslintrc.json | 177 +++++++++++ digital-future-summit/.gitignore | 51 ++++ digital-future-summit/.npmrc | 3 + digital-future-summit/.vscode/launch.json | 24 ++ digital-future-summit/.vscode/settings.json | 3 + digital-future-summit/README.md | 28 ++ digital-future-summit/angular.json | 200 +++++++++++++ digital-future-summit/e2e/src/app.e2e-spec.ts | 23 ++ digital-future-summit/e2e/src/app.po.ts | 11 + digital-future-summit/e2e/tsconfig.json | 13 + digital-future-summit/karma.conf.js | 36 +++ digital-future-summit/ngcc.config.js | 10 + digital-future-summit/ngsw-config.json | 39 +++ digital-future-summit/package.json | 127 ++++++++ .../@schematics+update+0.1102.12.patch | 24 ++ digital-future-summit/project.config.json | 9 + .../projects/webdpt/webdpt-packages/.gitkeep | 0 digital-future-summit/src/.browserslistrc | 20 ++ .../src/app/app-routing.module.ts | 35 +++ .../src/app/app.component.css | 0 .../src/app/app.component.spec.ts | 29 ++ .../src/app/app.component.ts | 13 + digital-future-summit/src/app/app.module.ts | 42 +++ .../src/app/config/app-auth-token.ts | 9 + .../src/app/config/system-config.ts | 62 ++++ .../src/app/config/system.module.ts | 35 +++ .../app/customization/customization-routes.ts | 11 + .../customization-routing.module.ts | 10 + .../app/customization/customization.module.ts | 13 + .../src/app/customization/style/index.less | 0 .../auth/forget/forget-routing.module.ts | 26 ++ .../auth/forget/forget.component.css | 20 ++ .../auth/forget/forget.component.html | 19 ++ .../auth/forget/forget.component.spec.ts | 82 +++++ .../auth/forget/forget.component.ts | 26 ++ .../auth/forget/forget.module.ts | 25 ++ .../auth/login-routing.module.ts | 34 +++ .../app/implementation/auth/login.module.ts | 24 ++ .../auth/login/login.component.css | 30 ++ .../auth/login/login.component.html | 19 ++ .../auth/login/login.component.spec.ts | 84 ++++++ .../auth/login/login.component.ts | 16 + .../home/home-routing.module.ts | 26 ++ .../implementation/home/home.component.css | 6 + .../implementation/home/home.component.html | 3 + .../app/implementation/home/home.component.ts | 28 ++ .../app/implementation/home/home.module.ts | 12 + .../implementation/implementation-routes.ts | 23 ++ .../implementation-routing.module.ts | 46 +++ .../implementation/implementation.module.ts | 77 +++++ .../language/model/language.config.ts | 15 + .../layout/layout.component.html | 66 ++++ .../layout/layout.component.less | 159 ++++++++++ .../implementation/layout/layout.component.ts | 140 +++++++++ .../src/app/implementation/layout/system.ts | 76 +++++ .../implementation/menu/model/menu.config.ts | 5 + .../implementation/menu/model/menu.model.ts | 1 + .../model/program-action.config.ts | 6 + .../model/program-action.model.ts | 1 + .../program-info/model/program-page.config.ts | 6 + .../program-info/model/program-page.model.ts | 1 + .../program-info/model/program.config.ts | 5 + .../program-info/model/program.model.ts | 8 + .../src/app/implementation/programs/.gitkeep | 0 .../lagrge-home/lagrge-home-routing.module.ts | 41 +++ .../lagrge-home/lagrge-home.component.html | 3 + .../lagrge-home/lagrge-home.component.less | 0 .../lagrge-home/lagrge-home.component.spec.ts | 25 ++ .../lagrge-home/lagrge-home.component.ts | 15 + .../lagrge-home/lagrge-home.module.ts | 17 ++ .../large-home/large-home-routing.module.ts | 13 + .../programs/large-home/large-home.module.ts | 18 ++ .../implementation/service/common.service.ts | 117 ++++++++ .../shared/organize-tree-modal/default.ts | 4 + .../shared/select-modal/default.ts | 20 ++ .../implementation/shared/shared.module.ts | 24 ++ .../src/app/implementation/style/index.less | 1 + .../app/implementation/style/variable.less | 0 .../tab-route/model/tab-route-config.ts | 10 + .../tools-routing-wrapper.module.ts | 17 ++ .../app/industry/industry-routing.module.ts | 10 + .../src/app/industry/industry.module.ts | 13 + .../src/app/page-not-found.component.ts | 12 + digital-future-summit/src/app/routes.ts | 12 + digital-future-summit/src/app/style.less | 6 + digital-future-summit/src/assets/api.dev.json | 19 ++ digital-future-summit/src/assets/api.json | 19 ++ .../src/assets/i18n/en_US/basic.json | 5 + .../src/assets/i18n/en_US/lagrge-home.json | 0 .../src/assets/i18n/zh_CN/basic.json | 5 + .../src/assets/i18n/zh_CN/lagrge-home.json | 0 .../src/assets/i18n/zh_TW/basic.json | 5 + .../src/assets/i18n/zh_TW/lagrge-home.json | 0 .../src/assets/icons/icon-128x128.png | Bin 0 -> 1253 bytes .../src/assets/icons/icon-144x144.png | Bin 0 -> 1394 bytes .../src/assets/icons/icon-152x152.png | Bin 0 -> 1427 bytes .../src/assets/icons/icon-192x192.png | Bin 0 -> 1790 bytes .../src/assets/icons/icon-384x384.png | Bin 0 -> 3557 bytes .../src/assets/icons/icon-512x512.png | Bin 0 -> 5008 bytes .../src/assets/icons/icon-72x72.png | Bin 0 -> 792 bytes .../src/assets/icons/icon-96x96.png | Bin 0 -> 958 bytes digital-future-summit/src/assets/img/bg.jpg | Bin 0 -> 172396 bytes .../src/assets/img/dwLogo.svg | 281 ++++++++++++++++++ .../src/assets/img/new-bg.jpg | Bin 0 -> 1802250 bytes .../src/assets/img/user-pic.png | Bin 0 -> 3232 bytes .../src/assets/lib/hljs/highlight.pack.js | 2 + .../src/assets/lib/hljs/styles/agate.css | 108 +++++++ .../assets/lib/hljs/styles/androidstudio.css | 66 ++++ .../assets/lib/hljs/styles/arduino-light.css | 88 ++++++ .../src/assets/lib/hljs/styles/arta.css | 73 +++++ .../src/assets/lib/hljs/styles/ascetic.css | 45 +++ .../lib/hljs/styles/atelier-cave-dark.css | 83 ++++++ .../lib/hljs/styles/atelier-cave-light.css | 85 ++++++ .../lib/hljs/styles/atelier-dune-dark.css | 69 +++++ .../lib/hljs/styles/atelier-dune-light.css | 69 +++++ .../lib/hljs/styles/atelier-estuary-dark.css | 84 ++++++ .../lib/hljs/styles/atelier-estuary-light.css | 84 ++++++ .../lib/hljs/styles/atelier-forest-dark.css | 69 +++++ .../lib/hljs/styles/atelier-forest-light.css | 69 +++++ .../lib/hljs/styles/atelier-heath-dark.css | 69 +++++ .../lib/hljs/styles/atelier-heath-light.css | 69 +++++ .../lib/hljs/styles/atelier-lakeside-dark.css | 69 +++++ .../hljs/styles/atelier-lakeside-light.css | 69 +++++ .../lib/hljs/styles/atelier-plateau-dark.css | 84 ++++++ .../lib/hljs/styles/atelier-plateau-light.css | 84 ++++++ .../lib/hljs/styles/atelier-savanna-dark.css | 84 ++++++ .../lib/hljs/styles/atelier-savanna-light.css | 84 ++++++ .../lib/hljs/styles/atelier-seaside-dark.css | 69 +++++ .../lib/hljs/styles/atelier-seaside-light.css | 69 +++++ .../hljs/styles/atelier-sulphurpool-dark.css | 69 +++++ .../hljs/styles/atelier-sulphurpool-light.css | 69 +++++ .../assets/lib/hljs/styles/atom-one-dark.css | 96 ++++++ .../assets/lib/hljs/styles/atom-one-light.css | 96 ++++++ .../assets/lib/hljs/styles/brown-paper.css | 64 ++++ .../assets/lib/hljs/styles/brown-papersq.png | Bin 0 -> 18198 bytes .../assets/lib/hljs/styles/codepen-embed.css | 60 ++++ .../assets/lib/hljs/styles/color-brewer.css | 71 +++++ .../src/assets/lib/hljs/styles/darcula.css | 77 +++++ .../src/assets/lib/hljs/styles/dark.css | 63 ++++ .../src/assets/lib/hljs/styles/darkula.css | 6 + .../src/assets/lib/hljs/styles/default.css | 99 ++++++ .../src/assets/lib/hljs/styles/docco.css | 97 ++++++ .../src/assets/lib/hljs/styles/dracula.css | 76 +++++ .../src/assets/lib/hljs/styles/far.css | 71 +++++ .../src/assets/lib/hljs/styles/foundation.css | 88 ++++++ .../assets/lib/hljs/styles/github-gist.css | 71 +++++ .../src/assets/lib/hljs/styles/github.css | 99 ++++++ .../src/assets/lib/hljs/styles/googlecode.css | 89 ++++++ .../src/assets/lib/hljs/styles/grayscale.css | 101 +++++++ .../assets/lib/hljs/styles/gruvbox-dark.css | 108 +++++++ .../assets/lib/hljs/styles/gruvbox-light.css | 108 +++++++ .../src/assets/lib/hljs/styles/hopscotch.css | 83 ++++++ .../src/assets/lib/hljs/styles/hybrid.css | 102 +++++++ .../src/assets/lib/hljs/styles/idea.css | 97 ++++++ .../src/assets/lib/hljs/styles/ir-black.css | 73 +++++ .../assets/lib/hljs/styles/kimbie.dark.css | 74 +++++ .../assets/lib/hljs/styles/kimbie.light.css | 74 +++++ .../src/assets/lib/hljs/styles/magula.css | 70 +++++ .../src/assets/lib/hljs/styles/mono-blue.css | 59 ++++ .../lib/hljs/styles/monokai-sublime.css | 83 ++++++ .../src/assets/lib/hljs/styles/monokai.css | 70 +++++ .../src/assets/lib/hljs/styles/obsidian.css | 88 ++++++ .../src/assets/lib/hljs/styles/ocean.css | 74 +++++ .../assets/lib/hljs/styles/paraiso-dark.css | 72 +++++ .../assets/lib/hljs/styles/paraiso-light.css | 72 +++++ .../src/assets/lib/hljs/styles/pojoaque.css | 83 ++++++ .../src/assets/lib/hljs/styles/pojoaque.jpg | Bin 0 -> 1186 bytes .../src/assets/lib/hljs/styles/purebasic.css | 96 ++++++ .../assets/lib/hljs/styles/qtcreator_dark.css | 83 ++++++ .../lib/hljs/styles/qtcreator_light.css | 83 ++++++ .../src/assets/lib/hljs/styles/railscasts.css | 106 +++++++ .../src/assets/lib/hljs/styles/rainbow.css | 85 ++++++ .../src/assets/lib/hljs/styles/routeros.css | 108 +++++++ .../assets/lib/hljs/styles/school-book.css | 72 +++++ .../assets/lib/hljs/styles/school-book.png | Bin 0 -> 486 bytes .../assets/lib/hljs/styles/solarized-dark.css | 84 ++++++ .../lib/hljs/styles/solarized-light.css | 84 ++++++ .../src/assets/lib/hljs/styles/sunburst.css | 102 +++++++ .../lib/hljs/styles/tomorrow-night-blue.css | 75 +++++ .../lib/hljs/styles/tomorrow-night-bright.css | 74 +++++ .../hljs/styles/tomorrow-night-eighties.css | 74 +++++ .../assets/lib/hljs/styles/tomorrow-night.css | 75 +++++ .../src/assets/lib/hljs/styles/tomorrow.css | 72 +++++ .../src/assets/lib/hljs/styles/vs.css | 68 +++++ .../src/assets/lib/hljs/styles/vs2015.css | 115 +++++++ .../src/assets/lib/hljs/styles/xcode.css | 93 ++++++ .../src/assets/lib/hljs/styles/xt256.css | 92 ++++++ .../src/assets/lib/hljs/styles/zenburn.css | 80 +++++ .../src/e2e/protractor.conf.js | 0 digital-future-summit/src/e2e/tsconfig.json | 1 + .../src/environments/environment.prod.ts | 8 + .../src/environments/environment.ts | 15 + digital-future-summit/src/favicon.ico | Bin 0 -> 1150 bytes digital-future-summit/src/index.html | 45 +++ digital-future-summit/src/main.ts | 17 ++ .../src/manifest.webmanifest | 51 ++++ digital-future-summit/src/mock-data/index.ts | 30 ++ .../src/mock-data/typings.d.ts | 4 + digital-future-summit/src/polyfills.ts | 32 ++ digital-future-summit/src/styles.less | 6 + digital-future-summit/src/test.ts | 20 ++ digital-future-summit/src/tsconfig.app.json | 14 + digital-future-summit/src/tsconfig.spec.json | 19 ++ digital-future-summit/src/typings.d.ts | 11 + digital-future-summit/themeCssBuild.js | 111 +++++++ digital-future-summit/tsconfig.json | 26 ++ 208 files changed, 9637 insertions(+) create mode 100644 digital-future-summit/.browserslistrc create mode 100644 digital-future-summit/.editorconfig create mode 100644 digital-future-summit/.eslintrc.json create mode 100644 digital-future-summit/.gitignore create mode 100644 digital-future-summit/.npmrc create mode 100644 digital-future-summit/.vscode/launch.json create mode 100644 digital-future-summit/.vscode/settings.json create mode 100644 digital-future-summit/README.md create mode 100644 digital-future-summit/angular.json create mode 100644 digital-future-summit/e2e/src/app.e2e-spec.ts create mode 100644 digital-future-summit/e2e/src/app.po.ts create mode 100644 digital-future-summit/e2e/tsconfig.json create mode 100644 digital-future-summit/karma.conf.js create mode 100644 digital-future-summit/ngcc.config.js create mode 100644 digital-future-summit/ngsw-config.json create mode 100644 digital-future-summit/package.json create mode 100644 digital-future-summit/patches/@schematics+update+0.1102.12.patch create mode 100644 digital-future-summit/project.config.json create mode 100644 digital-future-summit/projects/webdpt/webdpt-packages/.gitkeep create mode 100644 digital-future-summit/src/.browserslistrc create mode 100644 digital-future-summit/src/app/app-routing.module.ts create mode 100644 digital-future-summit/src/app/app.component.css create mode 100644 digital-future-summit/src/app/app.component.spec.ts create mode 100644 digital-future-summit/src/app/app.component.ts create mode 100644 digital-future-summit/src/app/app.module.ts create mode 100644 digital-future-summit/src/app/config/app-auth-token.ts create mode 100644 digital-future-summit/src/app/config/system-config.ts create mode 100644 digital-future-summit/src/app/config/system.module.ts create mode 100644 digital-future-summit/src/app/customization/customization-routes.ts create mode 100644 digital-future-summit/src/app/customization/customization-routing.module.ts create mode 100644 digital-future-summit/src/app/customization/customization.module.ts create mode 100644 digital-future-summit/src/app/customization/style/index.less create mode 100644 digital-future-summit/src/app/implementation/auth/forget/forget-routing.module.ts create mode 100644 digital-future-summit/src/app/implementation/auth/forget/forget.component.css create mode 100644 digital-future-summit/src/app/implementation/auth/forget/forget.component.html create mode 100644 digital-future-summit/src/app/implementation/auth/forget/forget.component.spec.ts create mode 100644 digital-future-summit/src/app/implementation/auth/forget/forget.component.ts create mode 100644 digital-future-summit/src/app/implementation/auth/forget/forget.module.ts create mode 100644 digital-future-summit/src/app/implementation/auth/login-routing.module.ts create mode 100644 digital-future-summit/src/app/implementation/auth/login.module.ts create mode 100644 digital-future-summit/src/app/implementation/auth/login/login.component.css create mode 100644 digital-future-summit/src/app/implementation/auth/login/login.component.html create mode 100644 digital-future-summit/src/app/implementation/auth/login/login.component.spec.ts create mode 100644 digital-future-summit/src/app/implementation/auth/login/login.component.ts create mode 100644 digital-future-summit/src/app/implementation/home/home-routing.module.ts create mode 100644 digital-future-summit/src/app/implementation/home/home.component.css create mode 100644 digital-future-summit/src/app/implementation/home/home.component.html create mode 100644 digital-future-summit/src/app/implementation/home/home.component.ts create mode 100644 digital-future-summit/src/app/implementation/home/home.module.ts create mode 100644 digital-future-summit/src/app/implementation/implementation-routes.ts create mode 100644 digital-future-summit/src/app/implementation/implementation-routing.module.ts create mode 100644 digital-future-summit/src/app/implementation/implementation.module.ts create mode 100644 digital-future-summit/src/app/implementation/language/model/language.config.ts create mode 100644 digital-future-summit/src/app/implementation/layout/layout.component.html create mode 100644 digital-future-summit/src/app/implementation/layout/layout.component.less create mode 100644 digital-future-summit/src/app/implementation/layout/layout.component.ts create mode 100644 digital-future-summit/src/app/implementation/layout/system.ts create mode 100644 digital-future-summit/src/app/implementation/menu/model/menu.config.ts create mode 100644 digital-future-summit/src/app/implementation/menu/model/menu.model.ts create mode 100644 digital-future-summit/src/app/implementation/program-info/model/program-action.config.ts create mode 100644 digital-future-summit/src/app/implementation/program-info/model/program-action.model.ts create mode 100644 digital-future-summit/src/app/implementation/program-info/model/program-page.config.ts create mode 100644 digital-future-summit/src/app/implementation/program-info/model/program-page.model.ts create mode 100644 digital-future-summit/src/app/implementation/program-info/model/program.config.ts create mode 100644 digital-future-summit/src/app/implementation/program-info/model/program.model.ts create mode 100644 digital-future-summit/src/app/implementation/programs/.gitkeep create mode 100644 digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home-routing.module.ts create mode 100644 digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.html create mode 100644 digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.less create mode 100644 digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.spec.ts create mode 100644 digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.ts create mode 100644 digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.module.ts create mode 100644 digital-future-summit/src/app/implementation/programs/large-home/large-home-routing.module.ts create mode 100644 digital-future-summit/src/app/implementation/programs/large-home/large-home.module.ts create mode 100644 digital-future-summit/src/app/implementation/service/common.service.ts create mode 100644 digital-future-summit/src/app/implementation/shared/organize-tree-modal/default.ts create mode 100644 digital-future-summit/src/app/implementation/shared/select-modal/default.ts create mode 100644 digital-future-summit/src/app/implementation/shared/shared.module.ts create mode 100644 digital-future-summit/src/app/implementation/style/index.less create mode 100644 digital-future-summit/src/app/implementation/style/variable.less create mode 100644 digital-future-summit/src/app/implementation/tab-route/model/tab-route-config.ts create mode 100644 digital-future-summit/src/app/implementation/tools-routing-wrapper.module.ts create mode 100644 digital-future-summit/src/app/industry/industry-routing.module.ts create mode 100644 digital-future-summit/src/app/industry/industry.module.ts create mode 100644 digital-future-summit/src/app/page-not-found.component.ts create mode 100644 digital-future-summit/src/app/routes.ts create mode 100644 digital-future-summit/src/app/style.less create mode 100644 digital-future-summit/src/assets/api.dev.json create mode 100644 digital-future-summit/src/assets/api.json create mode 100644 digital-future-summit/src/assets/i18n/en_US/basic.json create mode 100644 digital-future-summit/src/assets/i18n/en_US/lagrge-home.json create mode 100644 digital-future-summit/src/assets/i18n/zh_CN/basic.json create mode 100644 digital-future-summit/src/assets/i18n/zh_CN/lagrge-home.json create mode 100644 digital-future-summit/src/assets/i18n/zh_TW/basic.json create mode 100644 digital-future-summit/src/assets/i18n/zh_TW/lagrge-home.json create mode 100644 digital-future-summit/src/assets/icons/icon-128x128.png create mode 100644 digital-future-summit/src/assets/icons/icon-144x144.png create mode 100644 digital-future-summit/src/assets/icons/icon-152x152.png create mode 100644 digital-future-summit/src/assets/icons/icon-192x192.png create mode 100644 digital-future-summit/src/assets/icons/icon-384x384.png create mode 100644 digital-future-summit/src/assets/icons/icon-512x512.png create mode 100644 digital-future-summit/src/assets/icons/icon-72x72.png create mode 100644 digital-future-summit/src/assets/icons/icon-96x96.png create mode 100644 digital-future-summit/src/assets/img/bg.jpg create mode 100644 digital-future-summit/src/assets/img/dwLogo.svg create mode 100644 digital-future-summit/src/assets/img/new-bg.jpg create mode 100644 digital-future-summit/src/assets/img/user-pic.png create mode 100644 digital-future-summit/src/assets/lib/hljs/highlight.pack.js create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/agate.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/androidstudio.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/arduino-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/arta.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/ascetic.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-cave-dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-cave-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-dune-dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-dune-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-estuary-dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-estuary-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-forest-dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-forest-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-heath-dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-heath-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-lakeside-dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-lakeside-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-plateau-dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-plateau-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-savanna-dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-savanna-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-seaside-dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-seaside-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-sulphurpool-dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atelier-sulphurpool-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atom-one-dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/atom-one-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/brown-paper.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/brown-papersq.png create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/codepen-embed.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/color-brewer.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/darcula.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/darkula.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/default.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/docco.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/dracula.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/far.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/foundation.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/github-gist.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/github.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/googlecode.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/grayscale.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/gruvbox-dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/gruvbox-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/hopscotch.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/hybrid.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/idea.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/ir-black.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/kimbie.dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/kimbie.light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/magula.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/mono-blue.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/monokai-sublime.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/monokai.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/obsidian.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/ocean.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/paraiso-dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/paraiso-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/pojoaque.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/pojoaque.jpg create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/purebasic.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/qtcreator_dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/qtcreator_light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/railscasts.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/rainbow.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/routeros.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/school-book.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/school-book.png create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/solarized-dark.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/solarized-light.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/sunburst.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/tomorrow-night-blue.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/tomorrow-night-bright.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/tomorrow-night-eighties.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/tomorrow-night.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/tomorrow.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/vs.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/vs2015.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/xcode.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/xt256.css create mode 100644 digital-future-summit/src/assets/lib/hljs/styles/zenburn.css create mode 100644 digital-future-summit/src/e2e/protractor.conf.js create mode 100644 digital-future-summit/src/e2e/tsconfig.json create mode 100644 digital-future-summit/src/environments/environment.prod.ts create mode 100644 digital-future-summit/src/environments/environment.ts create mode 100644 digital-future-summit/src/favicon.ico create mode 100644 digital-future-summit/src/index.html create mode 100644 digital-future-summit/src/main.ts create mode 100644 digital-future-summit/src/manifest.webmanifest create mode 100644 digital-future-summit/src/mock-data/index.ts create mode 100644 digital-future-summit/src/mock-data/typings.d.ts create mode 100644 digital-future-summit/src/polyfills.ts create mode 100644 digital-future-summit/src/styles.less create mode 100644 digital-future-summit/src/test.ts create mode 100644 digital-future-summit/src/tsconfig.app.json create mode 100644 digital-future-summit/src/tsconfig.spec.json create mode 100644 digital-future-summit/src/typings.d.ts create mode 100644 digital-future-summit/themeCssBuild.js create mode 100644 digital-future-summit/tsconfig.json diff --git a/digital-future-summit/.browserslistrc b/digital-future-summit/.browserslistrc new file mode 100644 index 0000000..8084853 --- /dev/null +++ b/digital-future-summit/.browserslistrc @@ -0,0 +1,12 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 # For IE 9-11 support, remove 'not'. \ No newline at end of file diff --git a/digital-future-summit/.editorconfig b/digital-future-summit/.editorconfig new file mode 100644 index 0000000..0301b00 --- /dev/null +++ b/digital-future-summit/.editorconfig @@ -0,0 +1,14 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true +end_of_line = lf + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/digital-future-summit/.eslintrc.json b/digital-future-summit/.eslintrc.json new file mode 100644 index 0000000..305007c --- /dev/null +++ b/digital-future-summit/.eslintrc.json @@ -0,0 +1,177 @@ +{ + "root": true, + "ignorePatterns": [ + "src/test.ts", + "**/*.spec.ts", + "projects/**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "tsconfig.json" + ], + "createDefaultProgram": true + }, + "extends": [ + "plugin:@angular-eslint/recommended", + "plugin:@angular-eslint/template/process-inline-templates" + ], + "rules": { + "spaced-comment": [ + "error", + "always", + { + "line": { + "markers": [ + "/" + ], + "exceptions": [ + "-", + "+" + ] + }, + "block": { + "markers": [ + "!" + ], + "exceptions": [ + "*" + ], + "balanced": true + } + } + ], + "curly": [ + "error", + "all" + ], + "eol-last": "error", + "guard-for-in": "error", + "indent": [ + "error", + 2, + { + "SwitchCase": 1 + } + ], + "no-labels": "error", + "max-len": [ + "error", + 140, + 4 + ], + "no-caller": "error", + "no-bitwise": "error", + "no-console": "off", + "no-restricted-syntax": [ + "error", + { + "selector": "CallExpression[callee.object.name=\"console\"][callee.property.name!=/^(log|warn|error|info|trace)$/]", + "message": "Unexpected property on console object was called" + } + ], + "no-new-wrappers": "error", + "no-debugger": "error", + "no-empty": "off", + "no-eval": "error", + "no-shadow": [ + "error", + { + "hoist": "functions" + } + ], + "no-throw-literal": "error", + "no-fallthrough": "error", + "no-trailing-spaces": "error", + "no-unused-expressions": [ + "error", + { + "allowTernary": true + } + ], + "no-var": "error", + "prefer-const": [ + "error", + { + "destructuring": "any", + "ignoreReadBeforeAssign": false + } + ], + "quotes": [ + "error", + "single", + { + "allowTemplateLiterals": true, + "avoidEscape": true + } + ], + "radix": "error", + "semi": [ + "error", + "always" + ], + "eqeqeq": [ + "error", + "allow-null" + ], + "camelcase": "off", + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": [ + "app", + "cust" + ], + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": [ + "app", + "cust" + ], + "style": "kebab-case" + } + ], + "@angular-eslint/no-inputs-metadata-property": "error", + "@angular-eslint/no-outputs-metadata-property": "error", + "@angular-eslint/no-host-metadata-property": "error", + "@angular-eslint/no-input-rename": "error", + "@angular-eslint/no-output-rename": "error", + "@angular-eslint/use-lifecycle-interface": "error", + "@angular-eslint/use-pipe-transform-interface": "error", + "@angular-eslint/component-class-suffix": "error", + "@angular-eslint/directive-class-suffix": "error", + "@angular-eslint/use-component-view-encapsulation": "off", + "@angular-eslint/no-attribute-decorator": "error", + "@angular-eslint/no-output-native": "error", + "@angular-eslint/no-output-on-prefix": "error", + "@angular-eslint/no-forward-ref": "off", + "@angular-eslint/no-unused-css": "off", + "@angular-eslint/contextual-lifecycle": "error", + "@angular-eslint/no-pipe-impure": "error", + "@angular-eslint/no-empty-lifecycle-method": [ + "off" + ], + "@angular-eslint/no-conflicting-lifecycle": "off" + } + }, + { + "files": [ + "*.html" + ], + "extends": [ + "plugin:@angular-eslint/template/recommended" + ], + "rules": {} + } + ] +} \ No newline at end of file diff --git a/digital-future-summit/.gitignore b/digital-future-summit/.gitignore new file mode 100644 index 0000000..b791c11 --- /dev/null +++ b/digital-future-summit/.gitignore @@ -0,0 +1,51 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +/doc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +testem.log +/typings + +# e2e +/e2e/*.js +/e2e/*.map + +# System Files +.DS_Store +Thumbs.db +package-lock.json + +gitDiff.sh +.update + +# SonarQube +.scannerwork +sonar-project.properties \ No newline at end of file diff --git a/digital-future-summit/.npmrc b/digital-future-summit/.npmrc new file mode 100644 index 0000000..b49fa2a --- /dev/null +++ b/digital-future-summit/.npmrc @@ -0,0 +1,3 @@ +registry=https://registry.npmmirror.com +unsafe-perm=true +@webdpt:registry=https://repo.digiwincloud.com.cn/maven/repository/npm-webdpt/ diff --git a/digital-future-summit/.vscode/launch.json b/digital-future-summit/.vscode/launch.json new file mode 100644 index 0000000..7bbd5a9 --- /dev/null +++ b/digital-future-summit/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Launch via NPM", + "runtimeExecutable": "npm", + "runtimeArgs": [ + "run-script", + "schematics-debug" + ], + "stopOnEntry": true, + "port": 9229, + "skipFiles": [ + "/**" + ], + "resolveSourceMapLocations": [ + "${workspaceFolder}/**", + "!**/node_modules/**" + ], + } + ] +} diff --git a/digital-future-summit/.vscode/settings.json b/digital-future-summit/.vscode/settings.json new file mode 100644 index 0000000..d7207a4 --- /dev/null +++ b/digital-future-summit/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "typescript.tsdk": "node_modules\\typescript\\lib" +} \ No newline at end of file diff --git a/digital-future-summit/README.md b/digital-future-summit/README.md new file mode 100644 index 0000000..167e589 --- /dev/null +++ b/digital-future-summit/README.md @@ -0,0 +1,28 @@ +# Ng-Web端平台 + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.0.8. +需搭配nodejs 8.8以上(含npm) + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/digital-future-summit/angular.json b/digital-future-summit/angular.json new file mode 100644 index 0000000..17e82a5 --- /dev/null +++ b/digital-future-summit/angular.json @@ -0,0 +1,200 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "ng-webdpt": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "allowedCommonJsDependencies": [ + "crypto-js", + "ag-grid-angular", + "ag-grid-community", + "@ant-design/colors", + "date-fns/format", + "date-fns/parse", + "qs", + "@webdpt/framework/themes" + ], + "outputPath": "dist", + "index": "src/index.html", + "main": "src/main.ts", + "tsConfig": "src/tsconfig.app.json", + "polyfills": "src/polyfills.ts", + "assets": [ + "src/assets", + "src/favicon.ico", + { + "glob": "**/*", + "input": "./node_modules/@webdpt/framework/assets/dw-framework", + "output": "assets/dw-framework" + }, + { + "glob": "**/*", + "input": "src/assets", + "output": "assets" + }, + { + "glob": "**/*", + "input": "./node_modules/@ant-design/icons-angular/src/inline-svg/", + "output": "assets" + }, + "src/manifest.webmanifest" + ], + "styles": [ + "src/styles.less" + ], + "scripts": [ + "node_modules/jsencrypt/bin/jsencrypt.js" + ], + "vendorChunk": true, + "extractLicenses": false, + "buildOptimizer": false, + "sourceMap": true, + "optimization": false, + "namedChunks": true + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "anyComponentStyle", + "maximumWarning": "6kb" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "serviceWorker": true + }, + "service-worker-dev": { + "budgets": [ + { + "type": "anyComponentStyle", + "maximumWarning": "6kb" + } + ], + "outputHashing": "all", + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "serviceWorker": true + }, + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "ng-webdpt:build:development" + }, + "configurations": { + "production": { + "browserTarget": "ng-webdpt:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "ng-webdpt:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "karmaConfig": "./karma.conf.js", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.spec.json", + "scripts": [ + "node_modules/jsencrypt/bin/jsencrypt.js" + ], + "styles": [ + "src/styles.less" + ], + "assets": [ + "src/assets", + "src/favicon.ico", + { + "glob": "**/*", + "input": "./node_modules/@webdpt/framework/assets/dw-framework", + "output": "assets/dw-framework" + }, + { + "glob": "**/*", + "input": "src/assets", + "output": "assets" + }, + { + "glob": "**/*", + "input": "./node_modules/@ant-design/icons-angular/src/inline-svg/", + "output": "assets" + }, + "src/manifest.webmanifest" + ] + } + }, + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "ng-webdpt:serve" + }, + "configurations": { + "production": { + "devServerTarget": "ng-webdpt:serve:production" + } + } + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "lintFilePatterns": [ + "src/**/*.ts", + "src/**/*.html" + ] + } + } + } + } + }, + "defaultProject": "ng-webdpt", + "schematics": { + "@schematics/angular:component": { + "prefix": "app", + "style": "less" + }, + "@schematics/angular:directive": { + "prefix": "app" + } + }, + "cli": { + "warnings": {}, + "analytics": false, + "defaultCollection": "@angular-eslint/schematics" + } +} diff --git a/digital-future-summit/e2e/src/app.e2e-spec.ts b/digital-future-summit/e2e/src/app.e2e-spec.ts new file mode 100644 index 0000000..38305b9 --- /dev/null +++ b/digital-future-summit/e2e/src/app.e2e-spec.ts @@ -0,0 +1,23 @@ +import { AppPage } from './app.po'; +import { browser, logging } from 'protractor'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual(''); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain(jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry)); + }); +}); diff --git a/digital-future-summit/e2e/src/app.po.ts b/digital-future-summit/e2e/src/app.po.ts new file mode 100644 index 0000000..7d57112 --- /dev/null +++ b/digital-future-summit/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo(): Promise { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText(): Promise { + return element(by.css('app-root')).getText() as Promise; + } +} diff --git a/digital-future-summit/e2e/tsconfig.json b/digital-future-summit/e2e/tsconfig.json new file mode 100644 index 0000000..97f75e1 --- /dev/null +++ b/digital-future-summit/e2e/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es2015", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/digital-future-summit/karma.conf.js b/digital-future-summit/karma.conf.js new file mode 100644 index 0000000..e38f272 --- /dev/null +++ b/digital-future-summit/karma.conf.js @@ -0,0 +1,36 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageReporter: { + dir: require('path').join(__dirname, './coverage/ng-webdpt'), + subdir: '.', + reporters: [ + { type: 'html' }, + { type: 'lcovonly' }, + { type: 'text-summary' } + ] + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['ChromeHeadless'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/digital-future-summit/ngcc.config.js b/digital-future-summit/ngcc.config.js new file mode 100644 index 0000000..797961a --- /dev/null +++ b/digital-future-summit/ngcc.config.js @@ -0,0 +1,10 @@ +module.exports = { + packages: { + '@webdpt/components': { + ignorableDeepImportMatchers: [ + /ng-quicksilver\/date-picker\/standard-types/, + /iv-viewer\// + ] + } + }, +}; diff --git a/digital-future-summit/ngsw-config.json b/digital-future-summit/ngsw-config.json new file mode 100644 index 0000000..9e2ce5b --- /dev/null +++ b/digital-future-summit/ngsw-config.json @@ -0,0 +1,39 @@ +{ + "index": "/index.html", + "assetGroups": [ + { + "name": "app", + "installMode": "lazy", + "resources": { + "files": [ + "/favicon.ico", + "/index.html", + "/*.css", + "/*.js" + ] + } + }, { + "name": "assets", + "installMode": "lazy", + "updateMode": "lazy", + "resources": { + "files": [ + "/assets/**", + "!/assets/**/*.json" + ] + } + } + ], + "dataGroups": [ + { + "name": "app", + "urls": ["**"], + "cacheConfig": { + "strategy": "freshness", + "maxSize": 0, + "maxAge": "0u", + "timeout": "3s" + } + } + ] +} diff --git a/digital-future-summit/package.json b/digital-future-summit/package.json new file mode 100644 index 0000000..9cff333 --- /dev/null +++ b/digital-future-summit/package.json @@ -0,0 +1,127 @@ +{ + "name": "ng-webdpt", + "version": "0.0.0", + "license": "MIT", + "scripts": { + "postinstall": "npx patch-package@6.5.1 && ngcc", + "ng": "ng", + "start": "node --max_old_space_size=5120 ./node_modules/@angular/cli/bin/ng serve", + "start-prod": "ng serve --configuration production", + "build": "ng build", + "test": "node --max_old_space_size=5120 ./node_modules/@angular/cli/bin/ng test", + "framework-test": "ng test @webdpt/framework --code-coverage --watch", + "components-test": "ng test @webdpt/components --code-coverage --watch", + "mfa-app-test": "ng test @webdpt/mfa-app --code-coverage --watch", + "lint": "ng lint ng-webdpt", + "e2e": "ng e2e", + "buildCss": "node themeCssBuild", + "generate-i18n-files": "ngx-translate-extract -i ./src -o ./src/i18n/default-en.json --clean --sort --format namespaced-json", + "build-prod": "node --max_old_space_size=5120 ./node_modules/@angular/cli/bin/ng build --configuration production && node node_modules/@webdpt/scripts/builds/replace-sw.js && npm run dw-zip", + "doc:build": "compodoc -p src/tsconfig.app.json -d ./doc", + "doc:serve": "compodoc -s -r 4201 -d ./doc", + "doc:buildandserve": "compodoc -p ./tsconfig.json -s -r 4201 -d ./doc", + "sonar": "sonar-scanner", + "gmc": "node node_modules/@webdpt/scripts/builds/generate.js", + "dw-zip": "node node_modules/@webdpt/scripts/builds/dw-zip.js" + }, + "private": true, + "dependencies": { + "@angular-architects/module-federation": "^12.2.0", + "@angular/animations": "12.2.16", + "@angular/cdk": "^12.1.0", + "@angular/common": "12.2.16", + "@angular/compiler": "12.2.16", + "@angular/core": "12.2.16", + "@angular/forms": "12.2.16", + "@angular/platform-browser": "12.2.16", + "@angular/platform-browser-dynamic": "12.2.16", + "@angular/router": "12.2.16", + "@angular/service-worker": "12.2.16", + "@ant-design/icons-angular": "^12.0.3", + "@ng-dynamic-forms/core": "^14.0.0", + "@ngx-translate/core": "^13.0.0", + "@ngx-translate/http-loader": "^6.0.0", + "@types/requirejs": "^2.1.31", + "@webdpt/analytics": "5.2.11-1000", + "@webdpt/components": "5.2.11-1000", + "@webdpt/framework-js": "5.2.11-1000", + "@webdpt/framework": "5.2.11-1000", + "@webdpt/iv-viewer": "2.0.1", + "@webdpt/programs": "5.2.11-1000", + "ag-grid-angular": "^26.0.0", + "ag-grid-community": "^26.0.0", + "angular-gridster2": "^12.0.0", + "angular-in-memory-web-api": "^0.9.0", + "axios": "^1.4.0", + "classlist.js": "1.1.20150312", + "core-js": "^3.8.0", + "crypto-js": "^3.1.9-1", + "date-fns": "^2.10.0", + "fast-deep-equal": "^3.1.3", + "i18next": "^22.5.1", + "injection-js": "^2.4.0", + "jsencrypt": "^3.0.0-rc.1", + "moment": "2.24.0", + "ng-zorro-antd": "https://repo.digiwincloud.com.cn/maven/repository/npm-webdpt/ng-zorro-antd/-/ng-zorro-antd-12.1.1-1000.tgz", + "ngx-color": "5.1.3", + "ngx-highlightjs": "^2.1.1", + "ngx-mask": "^12.0.0", + "resize-observer-polyfill": "^1.5.1", + "rrule": "2.6.0", + "rxjs": "~6.6.0", + "sonarqube-scanner": "^2.4.1", + "tslint-sonarts": "^1.9.0", + "web-animations-js": "^2.3.2" + }, + "devDependencies": { + "@angular-devkit/build-angular": "12.2.16", + "@angular-devkit/core": "12.2.16", + "@angular-devkit/schematics": "12.2.16", + "@angular-devkit/schematics-cli": "12.2.16", + "@angular-eslint/builder": "^12.7.0", + "@angular-eslint/eslint-plugin": "^12.7.0", + "@angular-eslint/eslint-plugin-template": "^12.7.0", + "@angular-eslint/schematics": "^12.7.0", + "@angular-eslint/template-parser": "^12.7.0", + "@angular/cli": "12.2.16", + "@angular/compiler-cli": "12.2.16", + "@angular/language-service": "12.2.16", + "@biesbjerg/ngx-translate-extract": "^2.3.4", + "@compodoc/compodoc": "^1.1.3", + "@phenomnomnominal/tsquery": "^4.1.0", + "@schematics/angular": "12.2.16", + "@schematics/update": "0.1102.12", + "@types/jasmine": "~3.6.0", + "@types/jasminewd2": "~2.0.3", + "@types/node": "^12.11.1", + "@typescript-eslint/eslint-plugin": "4.28.2", + "@typescript-eslint/parser": "4.28.2", + "@webdpt/schematics": "5.2.11-1000", + "@webdpt/scripts": "5.2.11-1000", + "@webdpt/tslint-rules": "5.2.11-1000", + "archiver": "5.3.1", + "codelyzer": "^6.0.0", + "commander": "^5.1.0", + "cpx": "^1.5.0", + "eslint": "^7.26.0", + "inquirer": "^7.3.0", + "jasmine-core": "~3.8.0", + "jasmine-spec-reporter": "~5.0.0", + "karma": "~6.3.15", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage": "~2.0.3", + "karma-jasmine": "~4.0.0", + "karma-jasmine-html-reporter": "^1.5.0", + "less": "^3.10.3", + "ng-packagr": "^12.1.1", + "protractor": "~7.0.0", + "qs": "^6.11.2", + "raw-loader": "0.5.1", + "ts-node": "~7.0.0", + "tslib": "^2.0.0", + "tslint": "~6.1.0", + "typescript": "~4.3.5", + "webpack-bundle-analyzer": "^3.7.0", + "zone.js": "~0.11.4" + } +} \ No newline at end of file diff --git a/digital-future-summit/patches/@schematics+update+0.1102.12.patch b/digital-future-summit/patches/@schematics+update+0.1102.12.patch new file mode 100644 index 0000000..fca13c5 --- /dev/null +++ b/digital-future-summit/patches/@schematics+update+0.1102.12.patch @@ -0,0 +1,24 @@ +diff --git a/node_modules/@schematics/update/migrate/schema.json b/node_modules/@schematics/update/migrate/schema.json +index 58fca36..257ee01 100644 +--- a/node_modules/@schematics/update/migrate/schema.json ++++ b/node_modules/@schematics/update/migrate/schema.json +@@ -1,6 +1,6 @@ + { + "$schema": "http://json-schema.org/schema", +- "id": "PostUpdateSchema", ++ "$id": "PostUpdateSchema", + "type": "object", + "properties": { + "package": { +diff --git a/node_modules/@schematics/update/update/schema.json b/node_modules/@schematics/update/update/schema.json +index d921b9d..465cf9e 100644 +--- a/node_modules/@schematics/update/update/schema.json ++++ b/node_modules/@schematics/update/update/schema.json +@@ -1,6 +1,6 @@ + { + "$schema": "http://json-schema.org/schema", +- "id": "SchematicsUpdateSchema", ++ "$id": "SchematicsUpdateSchema", + "title": "Schematic Options Schema", + "type": "object", + "properties": { diff --git a/digital-future-summit/project.config.json b/digital-future-summit/project.config.json new file mode 100644 index 0000000..4bbf593 --- /dev/null +++ b/digital-future-summit/project.config.json @@ -0,0 +1,9 @@ +{ + "envType": "angular", + "dap": { + "enabled": true + }, + "athena": { + "enabled": false + } +} \ No newline at end of file diff --git a/digital-future-summit/projects/webdpt/webdpt-packages/.gitkeep b/digital-future-summit/projects/webdpt/webdpt-packages/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/digital-future-summit/src/.browserslistrc b/digital-future-summit/src/.browserslistrc new file mode 100644 index 0000000..1d9234a --- /dev/null +++ b/digital-future-summit/src/.browserslistrc @@ -0,0 +1,20 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +#> 0.5% +#last 2 versions +#Firefox ESR +#not dead +#not IE 9-11 # For IE 9-11 support, remove 'not'. + +last 1 Chrome version +last 1 Firefox version +last 2 Edge major versions +last 2 Safari major versions +last 2 iOS major versions +Firefox ESR +not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. diff --git a/digital-future-summit/src/app/app-routing.module.ts b/digital-future-summit/src/app/app-routing.module.ts new file mode 100644 index 0000000..7a7f575 --- /dev/null +++ b/digital-future-summit/src/app/app-routing.module.ts @@ -0,0 +1,35 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { PageNotFoundComponent } from './page-not-found.component'; + +const routes: Routes = [ + { + path: '', + pathMatch: 'prefix', + loadChildren: (): Promise => import('./implementation/implementation.module').then(m => m.ImplementationModule) + }, + { + path: '**', + component: PageNotFoundComponent + } +]; + + +@NgModule({ + imports: [ + RouterModule.forRoot( + routes, + { relativeLinkResolution: 'legacy' } + // , { enableTracing: true } // debugging purposes only + ), + ], + declarations: [ + PageNotFoundComponent + ], + exports: [ + RouterModule + ] +}) +export class AppRoutingModule { +} diff --git a/digital-future-summit/src/app/app.component.css b/digital-future-summit/src/app/app.component.css new file mode 100644 index 0000000..e69de29 diff --git a/digital-future-summit/src/app/app.component.spec.ts b/digital-future-summit/src/app/app.component.spec.ts new file mode 100644 index 0000000..11336b2 --- /dev/null +++ b/digital-future-summit/src/app/app.component.spec.ts @@ -0,0 +1,29 @@ +import { TestBed, waitForAsync } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { DwLanguageService } from '@webdpt/framework/language'; +import { of } from 'rxjs/internal/observable/of'; +import { AppComponent } from './app.component'; +describe('AppComponent', () => { + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + providers: [ + { provide: DwLanguageService, useValue: { + currentLanguage: 'zh_TW', + setUp: (lan: string): void => { }, + language$: of('zh_TW') + } } + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + it('should create the app', waitForAsync(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + })); +}); diff --git a/digital-future-summit/src/app/app.component.ts b/digital-future-summit/src/app/app.component.ts new file mode 100644 index 0000000..9bf8c2f --- /dev/null +++ b/digital-future-summit/src/app/app.component.ts @@ -0,0 +1,13 @@ +import { Component } from '@angular/core'; +import { DwLanguageService } from '@webdpt/framework/language'; + +@Component({ + selector: 'app-root', + template: ` + + `, + styleUrls: ['./app.component.css'] +}) +export class AppComponent { + constructor(langService: DwLanguageService) {} +} diff --git a/digital-future-summit/src/app/app.module.ts b/digital-future-summit/src/app/app.module.ts new file mode 100644 index 0000000..ad8a1ea --- /dev/null +++ b/digital-future-summit/src/app/app.module.ts @@ -0,0 +1,42 @@ +import { BrowserModule } from "@angular/platform-browser"; +import { NgModule } from "@angular/core"; +import { HttpClientJsonpModule, HttpClientModule } from "@angular/common/http"; +import { BrowserAnimationsModule } from "@angular/platform-browser/animations"; + +import { AppComponent } from "./app.component"; +import { AppRoutingModule } from "./app-routing.module"; +import { FrameworkModule } from "@webdpt/framework"; +import { FrameworkUICoreModule } from "@webdpt/components/providers"; +import { DwServiceWorkerModule } from "@webdpt/framework/service-worker"; +import { DwDapModule } from "@webdpt/framework/dap"; +import { DwProgramsModule } from "@webdpt/programs"; +import { ImplementationModule } from "./implementation/implementation.module"; +import { SYSTEM_CONFIG } from "./config/system-config"; +import { SystemModule } from "./config/system.module"; +import { environment } from "../environments/environment"; + +@NgModule({ + imports: [ + BrowserModule, + BrowserAnimationsModule, + AppRoutingModule, + HttpClientModule, + HttpClientJsonpModule, + /** ************* 端平台 ***************/ + FrameworkModule.forRoot([], SYSTEM_CONFIG), + FrameworkUICoreModule.forRoot(), + // --------------------------------------------------------- + // | 選配 + // --------------------------------------------------------- + DwDapModule, // DAP平台 + // DwProgramsModule, // 平台作業 + + SystemModule.forRoot([]), + ImplementationModule.forRoot([]), + // DwServiceWorkerModule.forRoot(60 * 60 * 1000, environment.production), + ], + declarations: [AppComponent], + providers: [], + bootstrap: [AppComponent], +}) +export class AppModule {} diff --git a/digital-future-summit/src/app/config/app-auth-token.ts b/digital-future-summit/src/app/config/app-auth-token.ts new file mode 100644 index 0000000..43c5f82 --- /dev/null +++ b/digital-future-summit/src/app/config/app-auth-token.ts @@ -0,0 +1,9 @@ +/* eslint-disable quotes */ +/** + * IAM 的 digi-middleware-auth-app [各應用系統的AppToken]. + */ +// eslint-disable-next-line max-len +export const DigiMiddlewareAuthApp = + "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6IkF0aGVuYSIsInNpZCI6MTYzNjc3NzI1NzgyNTkyfQ.3QLTPVKsk2Mp3j_aQ3X8bQW1wCJMNWeCkL6VPoK352c"; +// export const DigiMiddlewareAuthUser = "981dc293-8ccd-470f-9e36-99ba30af1324"; +export const DigiMiddlewareAuthUser = "66f9ca43-efdc-4f35-b7a1-fc56852ba3a6"; diff --git a/digital-future-summit/src/app/config/system-config.ts b/digital-future-summit/src/app/config/system-config.ts new file mode 100644 index 0000000..5cf3b61 --- /dev/null +++ b/digital-future-summit/src/app/config/system-config.ts @@ -0,0 +1,62 @@ +import { DigiMiddlewareAuthApp } from './app-auth-token'; +import { IDWDmcUserInfo } from '@webdpt/framework/config'; + +// 開發環境變數 +export const SYSTEM_CONFIG: IAppConfig = { + dwAppId: 'Athena', + dwAppName: '数智未来峰会', + defaultApp: '/', + dwLogoPath: './assets/img/dwLogo.svg', + dwDateFormat: 'yyyy/MM/dd', + dwTimeFormat: 'HH:mm:ss', + dwUsingTab: false, + dwTabMultiOpen: false, + defaultLogin: '/login', + dwAppAuthToken: DigiMiddlewareAuthApp, + dwLoadMaskHttp: true, + dwLoadMaskDelay: 0, + dwDmcUserInfo: { + username: '', + password: '' + }, + dwTabStoreStrategy: 'session' +}; + +export interface IAppConfig { + dwAppId: string; // Application ID(對應到互聯應用管理中心) + dwAppName: string; // Application NAME(對應到互聯應用管理中心) + defaultApp: string; // 首頁路徑 + dwLogoPath: string; // Logo圖檔路徑 + dwDateFormat: string; // 日期格式 + dwTimeFormat: string; // 時間格式 + dwUsingTab: boolean; // 是否啟用多頁佈局 + dwTabMultiOpen: boolean; // 多頁佈局預設是否可重覆開啟作業 + defaultLogin: string; // 登入頁路徑 + dwAppAuthToken: string; // IAM 的 digi-middleware-auth-app [各應用系統的AppToken]. + dwLoadMaskHttp: boolean; // HTTP加載遮罩是否啟用 + dwLoadMaskDelay: number; // 延遲顯示加載效果的時間毫秒 + dwDmcUserInfo: IDWDmcUserInfo; // 文檔中心的登入帳密 + dwTabStoreStrategy?: 'session' | 'local' | 'none'; // 多頁籤儲存策略 +} + +function loadJSON(filePath: string): any { + const json = loadTextFileAjaxSync(filePath, 'application/json'); + const obj = JSON.parse(json); + return obj; +} + +function loadTextFileAjaxSync(filePath: string, mimeType: string): string { + const xmlhttp = new XMLHttpRequest(); + xmlhttp.open('GET', filePath, false); + if (mimeType != null) { + if (xmlhttp.overrideMimeType) { + xmlhttp.overrideMimeType(mimeType); + } + } + xmlhttp.send(); + if (xmlhttp.status === 200) { + return xmlhttp.responseText; + } else { + return null; + } +} diff --git a/digital-future-summit/src/app/config/system.module.ts b/digital-future-summit/src/app/config/system.module.ts new file mode 100644 index 0000000..68ac801 --- /dev/null +++ b/digital-future-summit/src/app/config/system.module.ts @@ -0,0 +1,35 @@ +import { ModuleWithProviders, NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { Provider } from '@angular/compiler/src/core'; + +import { DwMockModule } from '@webdpt/framework/mock'; +import { DW_MOCK, DW_APP_AUTH_TOKEN } from '@webdpt/framework/config'; +import { environment } from '../../environments/environment'; +import { DigiMiddlewareAuthApp } from './app-auth-token'; + + +@NgModule({ + imports: [ + CommonModule, + DwMockModule + ], + declarations: [] +}) +export class SystemModule { + static forRoot(providers: Provider[]): ModuleWithProviders { + return { + ngModule: SystemModule, + providers: [ + { + provide: DW_MOCK, + useValue: environment.mock + }, + { + provide: DW_APP_AUTH_TOKEN, + useValue: DigiMiddlewareAuthApp + }, + ...providers + ] + }; + } +} diff --git a/digital-future-summit/src/app/customization/customization-routes.ts b/digital-future-summit/src/app/customization/customization-routes.ts new file mode 100644 index 0000000..f57a513 --- /dev/null +++ b/digital-future-summit/src/app/customization/customization-routes.ts @@ -0,0 +1,11 @@ +import { Routes } from '@angular/router'; + +import { IMPLEMENTATION_ROUTES } from '../implementation/implementation-routes'; + + +export const CUSTOMIZATION_ROUTES: Routes = [ + // 設定客製應用模組路由 + + // 應用開發應用模組路由 + ...IMPLEMENTATION_ROUTES +]; diff --git a/digital-future-summit/src/app/customization/customization-routing.module.ts b/digital-future-summit/src/app/customization/customization-routing.module.ts new file mode 100644 index 0000000..a2fa112 --- /dev/null +++ b/digital-future-summit/src/app/customization/customization-routing.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +const routes: Routes = []; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class CustomizationRoutingModule { } diff --git a/digital-future-summit/src/app/customization/customization.module.ts b/digital-future-summit/src/app/customization/customization.module.ts new file mode 100644 index 0000000..793cdd9 --- /dev/null +++ b/digital-future-summit/src/app/customization/customization.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { CustomizationRoutingModule } from './customization-routing.module'; + +@NgModule({ + imports: [ + CommonModule, + CustomizationRoutingModule + ], + declarations: [] +}) +export class CustomizationModule { } diff --git a/digital-future-summit/src/app/customization/style/index.less b/digital-future-summit/src/app/customization/style/index.less new file mode 100644 index 0000000..e69de29 diff --git a/digital-future-summit/src/app/implementation/auth/forget/forget-routing.module.ts b/digital-future-summit/src/app/implementation/auth/forget/forget-routing.module.ts new file mode 100644 index 0000000..2e7a50f --- /dev/null +++ b/digital-future-summit/src/app/implementation/auth/forget/forget-routing.module.ts @@ -0,0 +1,26 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { ForgetComponent } from './forget.component'; + +const routes: Routes = [ + { + path: '', + component: ForgetComponent, + pathMatch: 'prefix', + data: { + dwRouteData: { + programId: 'dw-forget' + } + } + } +]; + +@NgModule({ + imports: [ + RouterModule.forChild(routes) + ], + exports: [RouterModule] +}) +export class ForgetRoutingModule { +} diff --git a/digital-future-summit/src/app/implementation/auth/forget/forget.component.css b/digital-future-summit/src/app/implementation/auth/forget/forget.component.css new file mode 100644 index 0000000..46a1c97 --- /dev/null +++ b/digital-future-summit/src/app/implementation/auth/forget/forget.component.css @@ -0,0 +1,20 @@ +.forget-bg { + background-color: rgba(0, 21, 41, 1); + min-height: 100vh; +} + +.forget-logo { + margin-bottom: 10px; + padding-top: 100px; +} + +.forget-copyright { + text-align: center; + padding-bottom: 1rem; +} +.forget-copyright span { + font-size: 14px; +} +span { + color: white; +} diff --git a/digital-future-summit/src/app/implementation/auth/forget/forget.component.html b/digital-future-summit/src/app/implementation/auth/forget/forget.component.html new file mode 100644 index 0000000..cc9f5d6 --- /dev/null +++ b/digital-future-summit/src/app/implementation/auth/forget/forget.component.html @@ -0,0 +1,19 @@ +
+
+
+
+
+
+ + +
+
+
+
+ +
+
diff --git a/digital-future-summit/src/app/implementation/auth/forget/forget.component.spec.ts b/digital-future-summit/src/app/implementation/auth/forget/forget.component.spec.ts new file mode 100644 index 0000000..baf1209 --- /dev/null +++ b/digital-future-summit/src/app/implementation/auth/forget/forget.component.spec.ts @@ -0,0 +1,82 @@ +import { Component, Injectable, Input, Pipe, PipeTransform } from '@angular/core'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { TranslatePipe, TranslateService } from '@ngx-translate/core'; +import { DwForgetModule } from '@webdpt/components/user/forget-block'; +import { Logo_Path } from '@webdpt/framework/config'; +import { Observable } from 'rxjs/internal/Observable'; +import { of } from 'rxjs/internal/observable/of'; +import { ForgetComponent } from './forget.component'; +import { ForgetModule } from './forget.module'; + +describe('ForgetComponent', () => { + let component: ForgetComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [ + ForgetModule, + RouterTestingModule + ], + providers: [ + { provide: TranslateService, useClass: TranslateServiceStub }, + { provide: TranslatePipe, useClass: TranslatePipeMock }, + { provide: Logo_Path, useValue: '/mock-logo-path' } + ], + declarations: [ForgetComponent] + }) + .overrideModule(DwForgetModule, + { + set: { + imports: [], + declarations: [MockDwForgetBlockComponent], + exports: [MockDwForgetBlockComponent] + } + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ForgetComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); +@Pipe({ + name: 'translate' +}) +export class TranslatePipeMock implements PipeTransform { + public name = 'translate'; + + public transform(query: string, ...args: any[]): any { + return query; + } +} + +@Injectable() +export class TranslateServiceStub { + public instant(key: string, interpolateParams?: Object): string { + return key; + } + public get(key: T): Observable { + return of(key); + } + public onTranslationChange = of({ lang: 'TW' }); + public onLangChange = of({ translations: null }); + public onDefaultLangChange = of(true); + public currentLang = 'zh_TW'; +} +@Component({ + selector: 'dw-forget-block', + template: ` +
MockDwForgetBlockComponent
+ ` +}) +export class MockDwForgetBlockComponent { + @Input() verificationType: any; +} diff --git a/digital-future-summit/src/app/implementation/auth/forget/forget.component.ts b/digital-future-summit/src/app/implementation/auth/forget/forget.component.ts new file mode 100644 index 0000000..07059d5 --- /dev/null +++ b/digital-future-summit/src/app/implementation/auth/forget/forget.component.ts @@ -0,0 +1,26 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { Logo_Path } from '@webdpt/framework/config'; +import { IDwForgetverificationType } from '@webdpt/framework/account'; + +@Component({ + selector: 'app-forget', + templateUrl: './forget.component.html', + styleUrls: ['./forget.component.css'] +}) +export class ForgetComponent implements OnInit { + verificationType: Array = []; + + constructor( + @Inject(Logo_Path) public dwLogoPath: string + ) { } + + ngOnInit(): void { + this.verificationType = [ + IDwForgetverificationType.EMAIL, + IDwForgetverificationType.MOBILEPHONE + ]; + + } + + +} diff --git a/digital-future-summit/src/app/implementation/auth/forget/forget.module.ts b/digital-future-summit/src/app/implementation/auth/forget/forget.module.ts new file mode 100644 index 0000000..560bbea --- /dev/null +++ b/digital-future-summit/src/app/implementation/auth/forget/forget.module.ts @@ -0,0 +1,25 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { SharedModule } from '../../shared/shared.module'; +import { ForgetRoutingModule } from './forget-routing.module'; +import { ForgetComponent } from './forget.component'; +import { DwForgetModule } from '@webdpt/components/user/forget-block'; +import { NzGridModule } from 'ng-zorro-antd/grid'; +import { TranslateModule } from '@ngx-translate/core'; + + +@NgModule({ + imports: [ + CommonModule, + ForgetRoutingModule, + SharedModule, + DwForgetModule, + NzGridModule, + TranslateModule + ], + declarations: [ + ForgetComponent + ] +}) +export class ForgetModule { } diff --git a/digital-future-summit/src/app/implementation/auth/login-routing.module.ts b/digital-future-summit/src/app/implementation/auth/login-routing.module.ts new file mode 100644 index 0000000..9640d92 --- /dev/null +++ b/digital-future-summit/src/app/implementation/auth/login-routing.module.ts @@ -0,0 +1,34 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { LoginComponent } from './login/login.component'; + +const routes: Routes = [ + { + path: '', + component: LoginComponent, + pathMatch: 'prefix', + data: { + dwRouteData: { + programId: 'dw-login' + } + } + }, + // { + // path: 'register', + // component: RegisterComponent + // }, + // { + // path: 'forgot', + // component: ForgotComponent + // } +]; + +@NgModule({ + imports: [ + RouterModule.forChild(routes) + ], + exports: [RouterModule] +}) +export class LoginRoutingModule { +} diff --git a/digital-future-summit/src/app/implementation/auth/login.module.ts b/digital-future-summit/src/app/implementation/auth/login.module.ts new file mode 100644 index 0000000..5e6632e --- /dev/null +++ b/digital-future-summit/src/app/implementation/auth/login.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { SharedModule } from '../shared/shared.module'; +import { LoginRoutingModule } from './login-routing.module'; +import { LoginComponent } from './login/login.component'; +import { DwLoginModule } from '@webdpt/components/login'; +import { NzGridModule } from 'ng-zorro-antd/grid'; +import { TranslateModule } from '@ngx-translate/core'; + +@NgModule({ + imports: [ + CommonModule, + LoginRoutingModule, + SharedModule, + DwLoginModule, + NzGridModule, + TranslateModule + ], + declarations: [ + LoginComponent + ] +}) +export class LoginModule { } diff --git a/digital-future-summit/src/app/implementation/auth/login/login.component.css b/digital-future-summit/src/app/implementation/auth/login/login.component.css new file mode 100644 index 0000000..65992d2 --- /dev/null +++ b/digital-future-summit/src/app/implementation/auth/login/login.component.css @@ -0,0 +1,30 @@ +.login-bg { + background-color: rgba(0, 21, 41, 1); + height: 100%; + padding-top: 100px; +} + +.login-logo { + margin-bottom: 10px; +} +.login-form { + min-width: 250px; +} + +.login-form-forgot { + float: right; +} + +.login-form-button { + width: 100%; +} + +.login-copyright { + text-align: center; +} +.login-copyright span { + font-size: 14px; +} +span { + color: white; +} diff --git a/digital-future-summit/src/app/implementation/auth/login/login.component.html b/digital-future-summit/src/app/implementation/auth/login/login.component.html new file mode 100644 index 0000000..2f44221 --- /dev/null +++ b/digital-future-summit/src/app/implementation/auth/login/login.component.html @@ -0,0 +1,19 @@ + diff --git a/digital-future-summit/src/app/implementation/auth/login/login.component.spec.ts b/digital-future-summit/src/app/implementation/auth/login/login.component.spec.ts new file mode 100644 index 0000000..9862a8f --- /dev/null +++ b/digital-future-summit/src/app/implementation/auth/login/login.component.spec.ts @@ -0,0 +1,84 @@ +import { Component, Injectable, Input, Pipe, PipeTransform } from '@angular/core'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { TranslatePipe, TranslateService } from '@ngx-translate/core'; +import { DwLoginModule } from '@webdpt/components/login'; +import { Logo_Path } from '@webdpt/framework/config'; +import { Observable } from 'rxjs/internal/Observable'; +import { of } from 'rxjs/internal/observable/of'; +import { LoginModule } from '../login.module'; + +import { LoginComponent } from './login.component'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [ + LoginModule, + RouterTestingModule + ], + providers: [ + { provide: TranslateService, useClass: TranslateServiceStub }, + { provide: TranslatePipe, useClass: TranslatePipeMock }, + { provide: Logo_Path, useValue: '/mock-logo-path' } + ], + declarations: [LoginComponent] + }) + .overrideModule(DwLoginModule, { + set: { + imports: [], + declarations: [MockLoginComponent], + exports: [MockLoginComponent] + } + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); +@Pipe({ + name: 'translate' +}) +export class TranslatePipeMock implements PipeTransform { + public name = 'translate'; + + public transform(query: string, ...args: any[]): any { + return query; + } +} + +@Injectable() +export class TranslateServiceStub { + public instant(key: string, interpolateParams?: Object): string { + return key; + } + public get(key: T): Observable { + return of(key); + } + public onTranslationChange = of({ lang: 'TW' }); + public onLangChange = of({ translations: null }); + public onDefaultLangChange = of(true); + public currentLang = 'zh_TW'; +} +@Component({ + selector: 'dw-login-block', + template: ` +
mockLoginComponent
+ ` +}) +export class MockLoginComponent { + @Input() showRemember; + @Input() showLanguage; +} + diff --git a/digital-future-summit/src/app/implementation/auth/login/login.component.ts b/digital-future-summit/src/app/implementation/auth/login/login.component.ts new file mode 100644 index 0000000..97b6b76 --- /dev/null +++ b/digital-future-summit/src/app/implementation/auth/login/login.component.ts @@ -0,0 +1,16 @@ +import { Component, Inject, OnInit } from '@angular/core'; +import { Logo_Path } from '@webdpt/framework/config'; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.css'] +}) +export class LoginComponent { + + constructor( + @Inject(Logo_Path) public dwLogoPath: string, + ) { } + + +} diff --git a/digital-future-summit/src/app/implementation/home/home-routing.module.ts b/digital-future-summit/src/app/implementation/home/home-routing.module.ts new file mode 100644 index 0000000..42f9608 --- /dev/null +++ b/digital-future-summit/src/app/implementation/home/home-routing.module.ts @@ -0,0 +1,26 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { DwAuthGuardService } from '@webdpt/framework/auth'; +import { DwDefaultAppGuardService } from '@webdpt/framework/program-info'; +import { HomeComponent } from './home.component'; + +const routes: Routes = [ + { + path: '', + component: HomeComponent, + pathMatch: 'prefix', + canActivate: [DwAuthGuardService, DwDefaultAppGuardService], + data: { + dwRouteData: { + programId: 'home' + } + } + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class HomeRoutingModule { } diff --git a/digital-future-summit/src/app/implementation/home/home.component.css b/digital-future-summit/src/app/implementation/home/home.component.css new file mode 100644 index 0000000..dc50b1e --- /dev/null +++ b/digital-future-summit/src/app/implementation/home/home.component.css @@ -0,0 +1,6 @@ +::ng-deep .dw-f-header { + display: none; +} +::ng-deep .dw-f-menusider { + display: none; +} diff --git a/digital-future-summit/src/app/implementation/home/home.component.html b/digital-future-summit/src/app/implementation/home/home.component.html new file mode 100644 index 0000000..f7f6ef4 --- /dev/null +++ b/digital-future-summit/src/app/implementation/home/home.component.html @@ -0,0 +1,3 @@ +

+ home works! +

\ No newline at end of file diff --git a/digital-future-summit/src/app/implementation/home/home.component.ts b/digital-future-summit/src/app/implementation/home/home.component.ts new file mode 100644 index 0000000..6047461 --- /dev/null +++ b/digital-future-summit/src/app/implementation/home/home.component.ts @@ -0,0 +1,28 @@ +/* eslint-disable quotes */ +import { Component, OnInit } from "@angular/core"; +import { DwSsoService } from "@webdpt/framework"; +import { DigiMiddlewareAuthApp } from "../../../app/config/app-auth-token"; +@Component({ + selector: "app-home", + templateUrl: "./home.component.html", + styleUrls: ["./home.component.css"], +}) +export class HomeComponent implements OnInit { + constructor(private ssoService: DwSsoService) {} + userToken: string; + // eslint-disable-next-line @angular-eslint/use-lifecycle-interface + ngOnInit() { + const _this = this; + } + toLink() { + // const url = + // "http://PCC_MECH2-test.apps.digiwincloud.com.cn/sso-login?userToken=981dc293-8ccd-470f-9e36-99ba30af1324"; + const url = + "https://athena-test.digiwincloud.com.cn/sso-login?userToken=" + + this.userToken; + // const url = + // "https://athena-dev-platform-test.digiwincloud.com.cn/sso-login?userToken=981dc293-8ccd-470f-9e36-99ba30af1324"; + // console.log("url", url); + window.open(url); + } +} diff --git a/digital-future-summit/src/app/implementation/home/home.module.ts b/digital-future-summit/src/app/implementation/home/home.module.ts new file mode 100644 index 0000000..806493f --- /dev/null +++ b/digital-future-summit/src/app/implementation/home/home.module.ts @@ -0,0 +1,12 @@ +import { NgModule } from "@angular/core"; +import { CommonModule } from "@angular/common"; + +import { SharedModule } from "../shared/shared.module"; +import { HomeRoutingModule } from "./home-routing.module"; +import { HomeComponent } from "./home.component"; + +@NgModule({ + imports: [CommonModule, SharedModule, HomeRoutingModule], + declarations: [HomeComponent], +}) +export class HomeModule {} diff --git a/digital-future-summit/src/app/implementation/implementation-routes.ts b/digital-future-summit/src/app/implementation/implementation-routes.ts new file mode 100644 index 0000000..1256cc3 --- /dev/null +++ b/digital-future-summit/src/app/implementation/implementation-routes.ts @@ -0,0 +1,23 @@ +/* eslint-disable quotes */ +import { Routes } from "@angular/router"; + +export const IMPLEMENTATION_ROUTES: Routes = [ + // 設定應用開發應用模組路由 + // { + // path: "", // 首頁 + // // eslint-disable-next-line quotes + // pathMatch: "prefix", + // loadChildren: (): Promise => + // import("./programs/large-home/large-home.module").then( + // (m) => m.LargeHomeModule + // ), + // }, + // { + // path: "", // 新的路由 + // pathMatch: "prefix", + // loadChildren: (): any => + // import("./programs/large-home/large-home.module").then( + // (m) => m.LargeHomeModule + // ), + // }, +]; diff --git a/digital-future-summit/src/app/implementation/implementation-routing.module.ts b/digital-future-summit/src/app/implementation/implementation-routing.module.ts new file mode 100644 index 0000000..5932844 --- /dev/null +++ b/digital-future-summit/src/app/implementation/implementation-routing.module.ts @@ -0,0 +1,46 @@ +/* eslint-disable quotes */ +import { NgModule } from "@angular/core"; +import { RouterModule, Routes } from "@angular/router"; +import { MODULE_ROUTES } from "../routes"; +import { DwLayoutDefaultComponent } from "@webdpt/components/layout"; +import { DwSsoLoginComponent } from "@webdpt/components/sso-login"; +import { LayoutComponent } from "./layout/layout.component"; +import { + DwAuthGuardService, + DwDefaultAppGuardService, +} from "@webdpt/framework"; +const routes: Routes = [ + { + path: "", + pathMatch: "prefix", + component: LayoutComponent, + canActivate: [DwAuthGuardService, DwDefaultAppGuardService], // 登录拦截 + children: [...MODULE_ROUTES], + data: { + tabSetHosting: true, + }, + }, + { + path: "login", + pathMatch: "full", + loadChildren: (): Promise => + import("./auth/login.module").then((m) => m.LoginModule), + }, + { + path: "forget", + pathMatch: "full", + loadChildren: (): Promise => + import("./auth/forget/forget.module").then((m) => m.ForgetModule), + }, + { + path: "sso-login", + pathMatch: "full", + component: DwSsoLoginComponent, + }, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule], +}) +export class ImplementationRoutingModule {} diff --git a/digital-future-summit/src/app/implementation/implementation.module.ts b/digital-future-summit/src/app/implementation/implementation.module.ts new file mode 100644 index 0000000..0ac0ca5 --- /dev/null +++ b/digital-future-summit/src/app/implementation/implementation.module.ts @@ -0,0 +1,77 @@ +import { NgModule, ModuleWithProviders } from "@angular/core"; +import { CommonModule } from "@angular/common"; +import { Provider } from "@angular/compiler/src/core"; +import { HTTP_INTERCEPTORS } from "@angular/common/http"; + +import { + DW_MENU_JSON, + DW_PROGRAM_JSON, + DW_TAB_ROUTE_CONFIG_JSON, + DW_LANGUAGE_JSON, +} from "@webdpt/framework/config"; +import { DW_PROGRAM_PAGE, DW_PROGRAM_ACTION } from "@webdpt/framework/config"; +import { DwHttpApiInterceptor } from "@webdpt/framework/http"; +import { ImplementationRoutingModule } from "./implementation-routing.module"; +import { SharedModule } from "./shared/shared.module"; +import { menuJson } from "./menu/model/menu.config"; +import { programInfoJson } from "./program-info/model/program.config"; +import { programPageInfoJson } from "./program-info/model/program-page.config"; +import { programActionInfoJson } from "./program-info/model/program-action.config"; +import { tabRouteConfigJson } from "./tab-route/model/tab-route-config"; +import { languageList } from "./language/model/language.config"; +import { openSelectModalDefault } from "./shared/select-modal/default"; +import { openOrgTreeModalDefault } from "./shared/organize-tree-modal/default"; +import { DW_SELECT_MODAL_DEFAULT } from "@webdpt/components/modals/select"; +import { DW_ORGTREE_MODAL_DEFAULT } from "@webdpt/framework/organize-tree-core"; +import { LayoutComponent } from "./layout/layout.component"; +// import { themeConfig } from '../config/theme.config'; +import { DwMainLayoutModule } from "@webdpt/components/layout"; + +@NgModule({ + imports: [ + CommonModule, + ImplementationRoutingModule, + SharedModule, // 共享模組 + DwMainLayoutModule, + ], + declarations: [LayoutComponent], + providers: [], +}) +export class ImplementationModule { + static forRoot( + providers: Provider[] + ): ModuleWithProviders { + return { + ngModule: ImplementationModule, + providers: [ + // --------------------------------------------------------- + // | 選配 + // --------------------------------------------------------- + // 靜態設定檔 + // { provide: DW_THEME, useValue: themeConfig }, // 主題設定檔 + { provide: DW_MENU_JSON, useValue: menuJson }, // Menu靜態設定檔 + { provide: DW_LANGUAGE_JSON, useValue: languageList }, // 可用語言清單 + { provide: DW_PROGRAM_JSON, useValue: programInfoJson }, // 作業靜態設定檔 + { provide: DW_PROGRAM_PAGE, useValue: programPageInfoJson }, // 作業子頁面設定檔 + { provide: DW_PROGRAM_ACTION, useValue: programActionInfoJson }, // 作業功能設定檔 + { provide: DW_TAB_ROUTE_CONFIG_JSON, useValue: tabRouteConfigJson }, // 多頁佈局預設開啟作業 + { provide: DW_SELECT_MODAL_DEFAULT, useValue: openSelectModalDefault }, // 開窗服務的共用設定值 + { + provide: DW_ORGTREE_MODAL_DEFAULT, + useValue: openOrgTreeModalDefault, + }, // 組織人員樹開窗元件 + + // Http API 攔截器 + DwHttpApiInterceptor, + { + provide: HTTP_INTERCEPTORS, + // 用來替換api的網址 + // request.url = '/users'; => request.url = 'http://api/users'; + useExisting: DwHttpApiInterceptor, + multi: true, + }, + ...providers, + ], + }; + } +} diff --git a/digital-future-summit/src/app/implementation/language/model/language.config.ts b/digital-future-summit/src/app/implementation/language/model/language.config.ts new file mode 100644 index 0000000..c2ea917 --- /dev/null +++ b/digital-future-summit/src/app/implementation/language/model/language.config.ts @@ -0,0 +1,15 @@ +// 可用語言清單靜態設定檔 +export const languageList = [ + { + 'value': 'en_US', + 'label': 'English' + }, + { + 'value': 'zh_CN', + 'label': '简体' + }, + { + 'value': 'zh_TW', + 'label': '繁體' + } +]; diff --git a/digital-future-summit/src/app/implementation/layout/layout.component.html b/digital-future-summit/src/app/implementation/layout/layout.component.html new file mode 100644 index 0000000..d3b3dae --- /dev/null +++ b/digital-future-summit/src/app/implementation/layout/layout.component.html @@ -0,0 +1,66 @@ + + +
+ + +
+
+
+ 零部件云 +
+
+
+
+
+
+ 数据中台 +
+
+
+
+ chatFile +
+
+
+
+ 知识中台 +
+
+
+
+ 智驱工作台 +
+
+ +
+
+ AIOT +
+
+
+
+ 装备云 +
+
+
+
+
+
+ E10 +
+
+
+
+ T100 +
+
+
+
diff --git a/digital-future-summit/src/app/implementation/layout/layout.component.less b/digital-future-summit/src/app/implementation/layout/layout.component.less new file mode 100644 index 0000000..c4e2e2e --- /dev/null +++ b/digital-future-summit/src/app/implementation/layout/layout.component.less @@ -0,0 +1,159 @@ +/deep/.dw-f-header { + // display: none; + box-shadow: none; +} +/deep/.dw-f-menusider { + display: none; +} +/deep/.dw-f-header .dw-header-left { + display: none; +} +/deep/.dw-f-header .dw-header-right .dw-f-header-item { + display: none; +} +/deep/.dw-header-icon { + position: fixed; + right: 10px; + color: #fff; +} +/deep/nz-layout.ant-layout { + display: inline-block; +} +.layout-box { + position: relative; + width: 100%; + height: 100%; + overflow: hidden; + background-image: url("../../../assets/img/new-bg.jpg"); + background-repeat: no-repeat; + background-size: cover; + background-position: center; + .top-box { + // background: rgba(0, 0, 0, 0.5); + width: 85%; + height: 10%; + position: absolute; + display: flex; + justify-content: flex-end; + box-sizing: border-box; + left: 0; + top: 16%; + /* bottom: 0; */ + right: 0; + margin: auto; + } + .top-system-content { + width: 80px; + height: 80px; + box-shadow: 2px 2px 4px rgba(124, 199, 243, 0.6); + // opacity: 0.6; + border-radius: 40px; + background: rgba(0, 0, 0, 0.5); + margin: 5px; + padding: 10px; + font-weight: bold; + display: flex; + text-align: center; + justify-content: flex-start; + align-items: center; + cursor: pointer; + } + .center-box { + // background: rgba(0, 0, 0, 0.5); + width: 60%; + height: 50%; + position: absolute; + display: flex; + justify-content: space-between; + box-sizing: border-box; + left: 0; + top: 20%; + bottom: 0; + right: 0; + margin: auto; + } + + .system-content { + width: 80px; + height: 80px; + box-shadow: 2px 2px 4px rgba(124, 199, 243, 0.6); + // opacity: 0.6; + border-radius: 40px; + background: rgba(0, 0, 0, 0.5); + margin: 5px; + padding: 10px; + font-weight: bold; + display: flex; + text-align: left; + justify-content: flex-start; + align-items: center; + cursor: pointer; + .div-position7 { + right: 5%; + position: absolute; + top: 35%; + } + } + .div-position1 { + left: 20%; + position: absolute; + top: 20%; + } + .div-position2 { + position: absolute; + right: 20%; + top: 20%; + } + .div-position3 { + right: 22%; + position: absolute; + top: 46%; + } + .div-position4 { + left: 24%; + position: absolute; + top: 46%; + } + .div-position5 { + left: 7%; + position: absolute; + top: 32%; + } + .div-position6 { + right: 5%; + position: absolute; + top: 35%; + } + .bottom-box { + // background: rgba(245, 186, 186, 0.5); + width: 60%; + height: 100px; + position: absolute; + display: flex; + justify-content: flex-start; + box-sizing: border-box; + left: 0; + bottom: 5%; + right: 0; + margin: auto; + } + .bottom-system-content { + width: 80px; + height: 80px; + box-shadow: 2px 2px 4px rgba(124, 199, 243, 0.6); + // opacity: 0.6; + border-radius: 40px; + background: rgba(0, 0, 0, 0.5); + margin: 5px; + padding: 10px; + font-weight: bold; + display: flex; + text-align: center; + justify-content: flex-start; + align-items: center; + cursor: pointer; + } +} +// .system-content:hover .system-box { +// transform: scale(1.1); /* 鼠标悬停时放大1.1倍 */ +// } diff --git a/digital-future-summit/src/app/implementation/layout/layout.component.ts b/digital-future-summit/src/app/implementation/layout/layout.component.ts new file mode 100644 index 0000000..f3cbd7e --- /dev/null +++ b/digital-future-summit/src/app/implementation/layout/layout.component.ts @@ -0,0 +1,140 @@ +/* eslint-disable quotes */ +import { systemList } from "./system"; +// import { DwHttpApiInterceptor } from "@webdpt/framework/http"; +/* eslint-disable quotes */ +import { Component, OnInit } from "@angular/core"; +import { + DigiMiddlewareAuthApp, + DigiMiddlewareAuthUser, +} from "app/config/app-auth-token"; +import { CommonService } from "../service/common.service"; +@Component({ + selector: "app-layout", + templateUrl: "./layout.component.html", + styleUrls: ["./layout.component.less"], +}) +export class LayoutComponent implements OnInit { + // 登出: https://iam-test.digiwincloud.com.cn/api/iam/v2/identity/logout + userToken: string; + systemList = {}; + user_info = { + userId: "", // 当前用户账号 + tenantId: "", // 当前用户租户id + productKey: "", // json字段的头部 + }; + queryDisplayList: any; + constructor(private commonService: CommonService) {} + ngOnInit(): void { + this.systemList = systemList; + this.getSystem(); + } + toLinkSystem(type?) { + // 1. 通过获取user_token获取单点登录链接 + // 请求获取user_token + switch (type) { + case "DMP": + this.getUserToken(type, this.systemList["T100bs"]); + break; + case "chatFile": + this.getUserToken(type, this.systemList["chatFile"]); + break; + case "KMO": + this.getUserToken(type, this.systemList["KMO"]); + break; + case "EIP": + this.getUserToken(type, this.systemList["EIP"]); + break; + case "AIOT": + this.getUserToken(type, this.systemList["AIOT"]); + break; + case "equipmentCloud": + this.getUserToken(type, this.systemList["equipmentCloud"]); + break; + case "partsCloud": + this.getUserToken(type, this.systemList["partsCloud"]); + break; + case "E10229": + this.getUserToken(type, this.systemList["E10229"]); + break; + case "T100bs": + this.getUserToken(type, this.systemList["T100bs"]); + break; + } + } + /** + * 通过请求queryDisplayList接口登录 + */ + getSystem() { + const headers = { + "Digi-Middleware-Auth-App": DigiMiddlewareAuthApp, + "Digi-Middleware-Auth-User": DigiMiddlewareAuthUser, + }; + this.commonService + .getRequestWithHeaders( + "https://semc.apps.digiwincloud.com.cn/tenant/semc/applink/queryDisplayList", + headers + ) + .then((res) => { + this.queryDisplayList = res.response; + console.log("queryDisplayList", this.queryDisplayList); + }) + .catch((error) => console.error(error)); + } + /** + * 通过tenantId获取用户token + */ + async getUserToken(type, item) { + if (item.ssoLogin) { + // 单点登录跳转 queryDisplayList接口的数据 底部 e10 t100 + console.log("单点登录跳转录的方式", type); + const queryDisplayList = this.queryDisplayList.filter((arr) => { + return arr.code === type; + }); + // console.log("cloudwebsite", queryDisplayList[0]["cloudwebsite"]); + window.open(queryDisplayList[0]["cloudwebsite"]); + } else if (item.mockLogin) { + console.log("模拟登录的方式", type); + // 通过书康哥接口请求 模拟登录 + const DwUserInfo = JSON.parse(sessionStorage.getItem("DwUserInfo")); + console.log("DwUserInfo", DwUserInfo); + this.user_info.userId = DwUserInfo["userId"]; + this.user_info.tenantId = DwUserInfo["tenantId"]; + this.user_info.productKey = type; + console.log("user_info", this.user_info); + const getUrl = + "https://demo-athenaopt.apps.digiwincloud.com.cn/restful/standard/demo/api/default/login"; + this.commonService + .postWithHeaders(getUrl, this.user_info, {}) + .then((res) => { + // console.log("res", res); + if (res && res.response) { + this.userToken = res.response.user_token; + const url = item.url + "/sso-login?userToken=" + this.userToken; + window.open(url); + } + }); + } else { + console.log("切换租户的方式", type); + // 接口 refresh/tenant 切换租户方式 + const getUrl = + this.commonService.iamUrl + "/api/iam/v2/identity/token/refresh/tenant"; + console.log("iamUrl", this.commonService.iamUrl); + const headers = { + "Digi-Middleware-Auth-App": DigiMiddlewareAuthApp, + "Digi-Middleware-Auth-User": DigiMiddlewareAuthUser, + }; + const data = { + tenantSid: item.sid, + }; + this.userToken = await this.commonService + .postWithHeaders(getUrl, data, headers) + .then((res) => { + // console.log("res", res); + return res.user_token; + }); + let url = ""; + url = item.url + "/sso-login?userToken=" + this.userToken; + window.open(url); + } + } +} diff --git a/digital-future-summit/src/app/implementation/layout/system.ts b/digital-future-summit/src/app/implementation/layout/system.ts new file mode 100644 index 0000000..a2486d3 --- /dev/null +++ b/digital-future-summit/src/app/implementation/layout/system.ts @@ -0,0 +1,76 @@ +/* eslint-disable quotes */ +export const systemList = { + DMP: { + title: "数据中台", + sid: 150269977879104, + id: "zhoujg", + name: "鼎捷集团售前", + url: "https://dmp-dmf-hw-ys.digiwincloud.com.cn", + mockLogin: false, + ssoLogin: false, + }, + chatFile: { + title: "chatFile", + sid: 610301619790400, + id: "ShanghaiWorldExpo", + name: "ChatFile演示", + url: "https://kcf.apps.digiwincloud.com.cn", + mockLogin: false, + ssoLogin: false, + }, + KMO: { + title: "知识中台", + sid: 610301619790400, + id: "ShanghaiWorldExpo", + name: "ChatFile演示", + url: "https://kcf.apps.digiwincloud.com.cn", + mockLogin: false, + ssoLogin: false, + }, + EIP: { + title: "智驱工作台", + sid: 821224928908288, + id: "digiwinSummit", + name: "数智未来峰会", + url: "https://athena.digiwincloud.com.cn", + mockLogin: false, + ssoLogin: false, + }, + AIOT: { + title: "AIOT", + sid: 190963220054592, + id: "zhoujg999", + name: "鼎鼎塑料集团", + url: "https://console.digiwincloud.com.cn", + mockLogin: false, + ssoLogin: false, + }, + equipmentCloud: { + title: "装备云", + sid: 821224928908288, + id: "digiwinSummit", + name: "数智未来峰会", + url: "https://athena.digiwincloud.com.cn", + mockLogin: false, + ssoLogin: false, + }, + partsCloud: { + title: "零部件云", + sid: 821224928908288, + id: "digiwinSummit", + name: "数智未来峰会", + url: "https://athena.digiwincloud.com.cn", + mockLogin: true, + ssoLogin: false, + }, + E10229: { + title: "E10", + mockLogin: false, + ssoLogin: true, + }, + T100bs: { + title: "T100", + mockLogin: false, + ssoLogin: true, + }, +}; diff --git a/digital-future-summit/src/app/implementation/menu/model/menu.config.ts b/digital-future-summit/src/app/implementation/menu/model/menu.config.ts new file mode 100644 index 0000000..82150db --- /dev/null +++ b/digital-future-summit/src/app/implementation/menu/model/menu.config.ts @@ -0,0 +1,5 @@ +import { menuData } from './menu.model'; // Menu靜態設定檔 + +export const menuJson = [ + ...menuData +]; diff --git a/digital-future-summit/src/app/implementation/menu/model/menu.model.ts b/digital-future-summit/src/app/implementation/menu/model/menu.model.ts new file mode 100644 index 0000000..e5dbc61 --- /dev/null +++ b/digital-future-summit/src/app/implementation/menu/model/menu.model.ts @@ -0,0 +1 @@ +export const menuData = []; diff --git a/digital-future-summit/src/app/implementation/program-info/model/program-action.config.ts b/digital-future-summit/src/app/implementation/program-info/model/program-action.config.ts new file mode 100644 index 0000000..a040812 --- /dev/null +++ b/digital-future-summit/src/app/implementation/program-info/model/program-action.config.ts @@ -0,0 +1,6 @@ +import { programActionData } from './program-action.model'; + + +export const programActionInfoJson = [ + ...programActionData // ProgramAction靜態設定檔 +]; diff --git a/digital-future-summit/src/app/implementation/program-info/model/program-action.model.ts b/digital-future-summit/src/app/implementation/program-info/model/program-action.model.ts new file mode 100644 index 0000000..8bfeba3 --- /dev/null +++ b/digital-future-summit/src/app/implementation/program-info/model/program-action.model.ts @@ -0,0 +1 @@ +export const programActionData = []; diff --git a/digital-future-summit/src/app/implementation/program-info/model/program-page.config.ts b/digital-future-summit/src/app/implementation/program-info/model/program-page.config.ts new file mode 100644 index 0000000..bf81e0c --- /dev/null +++ b/digital-future-summit/src/app/implementation/program-info/model/program-page.config.ts @@ -0,0 +1,6 @@ +import { programPageData } from './program-page.model'; + + +export const programPageInfoJson = [ + ...programPageData // ProgramPage靜態設定檔 +]; diff --git a/digital-future-summit/src/app/implementation/program-info/model/program-page.model.ts b/digital-future-summit/src/app/implementation/program-info/model/program-page.model.ts new file mode 100644 index 0000000..1026693 --- /dev/null +++ b/digital-future-summit/src/app/implementation/program-info/model/program-page.model.ts @@ -0,0 +1 @@ +export const programPageData = []; diff --git a/digital-future-summit/src/app/implementation/program-info/model/program.config.ts b/digital-future-summit/src/app/implementation/program-info/model/program.config.ts new file mode 100644 index 0000000..c53bfdf --- /dev/null +++ b/digital-future-summit/src/app/implementation/program-info/model/program.config.ts @@ -0,0 +1,5 @@ +import { programData } from './program.model'; + +export const programInfoJson = [ + ...programData, // Program靜態設定檔 +]; diff --git a/digital-future-summit/src/app/implementation/program-info/model/program.model.ts b/digital-future-summit/src/app/implementation/program-info/model/program.model.ts new file mode 100644 index 0000000..a5401ee --- /dev/null +++ b/digital-future-summit/src/app/implementation/program-info/model/program.model.ts @@ -0,0 +1,8 @@ +export const programData = [ + { + 'id': 'home', + 'module': 'root', // 沒有模組歸屬不做模組切分,不上傳到IAM做權限控管 + 'type': '', + 'routerLink': '/' + }, +]; diff --git a/digital-future-summit/src/app/implementation/programs/.gitkeep b/digital-future-summit/src/app/implementation/programs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home-routing.module.ts b/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home-routing.module.ts new file mode 100644 index 0000000..d08131b --- /dev/null +++ b/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home-routing.module.ts @@ -0,0 +1,41 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { LagrgeHomeComponent } from './lagrge-home.component'; +import { DwLanguageService } from '@webdpt/framework/language'; +import { DwAuthGuardService } from '@webdpt/framework/auth'; + +const routes: Routes = [ + { + path: '', + pathMatch: 'prefix', + canActivate: [DwAuthGuardService], + data: { + dwRouteData: { + programId: 'lagrge-home', + dwAuthId: 'lagrge-home' + } + }, + resolve: { + transaction: DwLanguageService + }, + children: [ + { + path: "", + pathMatch: "prefix", + component: LagrgeHomeComponent, + canActivate: [DwAuthGuardService], + data: { + dwRouteData: { + dwAuthId: 'lagrge-home', + } + } + } + ] + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class LagrgeHomeRoutingModule { } diff --git a/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.html b/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.html new file mode 100644 index 0000000..4834ea1 --- /dev/null +++ b/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.html @@ -0,0 +1,3 @@ +
+ 自定义 +
diff --git a/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.less b/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.less new file mode 100644 index 0000000..e69de29 diff --git a/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.spec.ts b/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.spec.ts new file mode 100644 index 0000000..228f199 --- /dev/null +++ b/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LagrgeHomeComponent } from './lagrge-home.component'; + +describe('LagrgeHomeComponent', () => { + let component: LagrgeHomeComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ LagrgeHomeComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(LagrgeHomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.ts b/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.ts new file mode 100644 index 0000000..6986b5a --- /dev/null +++ b/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-lagrge-home', + templateUrl: './lagrge-home.component.html', + styleUrls: ['./lagrge-home.component.less'] +}) +export class LagrgeHomeComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.module.ts b/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.module.ts new file mode 100644 index 0000000..46fc9f7 --- /dev/null +++ b/digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { LagrgeHomeRoutingModule } from './lagrge-home-routing.module'; +import { LagrgeHomeComponent } from './lagrge-home.component'; + + +@NgModule({ + declarations: [ + LagrgeHomeComponent + ], + imports: [ + CommonModule, + LagrgeHomeRoutingModule + ] +}) +export class LagrgeHomeModule { } diff --git a/digital-future-summit/src/app/implementation/programs/large-home/large-home-routing.module.ts b/digital-future-summit/src/app/implementation/programs/large-home/large-home-routing.module.ts new file mode 100644 index 0000000..3382ee4 --- /dev/null +++ b/digital-future-summit/src/app/implementation/programs/large-home/large-home-routing.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +const routes: Routes = [ + { + path: 'lagrge-home', loadChildren: () => import('./lagrge-home/lagrge-home.module').then(m => m.LagrgeHomeModule) + }]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class LargeHomeRoutingModule { } diff --git a/digital-future-summit/src/app/implementation/programs/large-home/large-home.module.ts b/digital-future-summit/src/app/implementation/programs/large-home/large-home.module.ts new file mode 100644 index 0000000..84ed60c --- /dev/null +++ b/digital-future-summit/src/app/implementation/programs/large-home/large-home.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { LargeHomeRoutingModule } from './large-home-routing.module'; + +const programsModules = [ + +]; + +@NgModule({ + imports: [ + CommonModule, + LargeHomeRoutingModule, + ...programsModules + ], + declarations: [] +}) +export class LargeHomeModule { } diff --git a/digital-future-summit/src/app/implementation/service/common.service.ts b/digital-future-summit/src/app/implementation/service/common.service.ts new file mode 100644 index 0000000..bccf18c --- /dev/null +++ b/digital-future-summit/src/app/implementation/service/common.service.ts @@ -0,0 +1,117 @@ +/* eslint-disable quotes */ +import { HttpClient } from "@angular/common/http"; +import { Inject, Injectable } from "@angular/core"; +import { Observable } from "rxjs"; +import { DwSystemConfigService } from "@webdpt/framework/config"; +import { DW_AUTH_TOKEN } from "@webdpt/framework/auth"; + +@Injectable({ providedIn: "root" }) +export class CommonService { + atdmUrl: string; + bpmUrl: string; + atmcUrl: any; + frcUrl: any; + eocUrl: any; + iamUrl: any; + themeMapUrl: any; + pageData: any; + // 记录机制的content参数 + content: any; + uibotUrl: string; + isDisabled: boolean; + caLqsUrl: string; + constructor( + @Inject(DW_AUTH_TOKEN) protected authToken: any, + private http: HttpClient, + private configService: DwSystemConfigService + ) { + this.configService.get("atdmUrl").subscribe((url: string): void => { + this.atdmUrl = url; + }); + this.configService.get("bpmUrl").subscribe((url): void => { + this.bpmUrl = url; + }); + this.configService.get("atmcUrl").subscribe((url): void => { + this.atmcUrl = url; + }); + this.configService.get("frcUrl").subscribe((url): void => { + this.frcUrl = url; + }); + this.configService.get("eocUrl").subscribe((url): void => { + this.eocUrl = url; + }); + this.configService.get("uibotUrl").subscribe((url: string): void => { + this.uibotUrl = url; + }); + this.configService.get("caLqsUrl").subscribe((url: string): void => { + this.caLqsUrl = url; + // console.log("caLqsUrl", this.caLqsUrl); + }); + this.configService.get("iamUrl").subscribe((url: string): void => { + this.iamUrl = url; + console.log("iamUrl", this.iamUrl); + }); + } + + getHeader(): any { + if (this.authToken?.token) { + return { + "digi-middleware-auth-user": this.authToken.token, + token: this.authToken.token, + }; + } + return {}; + } + /** + * + * @param url + * @param data + * @param headers + * @returns + */ + postWithHeaders(url, data, headers) { + headers = headers || {}; + headers["Content-Type"] = "application/json"; // 设置默认的Content-Type + const options = { + method: "POST", + headers: headers, + body: JSON.stringify(data), + }; + + return fetch(url, options) + .then((response) => { + if (response.ok) { + return response.json(); + } + throw new Error("请求出错!"); + }) + .catch((error) => { + console.error("请求出错!", error); + throw error; + }); + } + /** + * + * @param url + * @param headers + * @returns + */ + getRequestWithHeaders(url, headers) { + return fetch(url, { + method: "GET", + headers: headers, + }) + .then((response) => { + if (!response.ok) { + throw new Error("Network response was not ok " + response.statusText); + } + return response.json(); + }) + .catch((error) => { + console.error( + "There has been a problem with your fetch operation:", + error + ); + }); + } +} diff --git a/digital-future-summit/src/app/implementation/shared/organize-tree-modal/default.ts b/digital-future-summit/src/app/implementation/shared/organize-tree-modal/default.ts new file mode 100644 index 0000000..1f6d0bc --- /dev/null +++ b/digital-future-summit/src/app/implementation/shared/organize-tree-modal/default.ts @@ -0,0 +1,4 @@ +import { IDwOrgTreeDefault } from '@webdpt/framework/organize-tree-core'; +import { NzTreeNode } from 'ng-zorro-antd/tree'; + +export const openOrgTreeModalDefault: IDwOrgTreeDefault = {}; diff --git a/digital-future-summit/src/app/implementation/shared/select-modal/default.ts b/digital-future-summit/src/app/implementation/shared/select-modal/default.ts new file mode 100644 index 0000000..fc08412 --- /dev/null +++ b/digital-future-summit/src/app/implementation/shared/select-modal/default.ts @@ -0,0 +1,20 @@ +import { IDwSelectModalCustomizeConfig } from '@webdpt/components/modals/select'; + +export const openSelectModalDefault: IDwSelectModalCustomizeConfig = { + modalTitle: 'default', // modal 標題. + modalWidth: '80%', // modal 寬度. + modalOkText: 'dw-determine', // 確認按鈕文字. + modalCancelText: 'dw-cancel', // 取消按鈕文字. + tableIdField: '', // 使用的 id 欄位. + tableNameField: '', // 使用的 name 欄位. + tableColDefs: [], // 表格欄位定義. + tableMultiSelect: true, // 多選或單選. + tableShowTag: true, // 是否顯示下方的 tag. + tableIsFilter: true, // 是否提供搜尋. + tablePageSize: 3, // 每頁展示多少數據,可雙向繫結. + tableShowPagination: true, // 是否顯示分頁器. + tableShowSizeChanger: true, // 是否可以改變 dwPageSize. + tableNoResult: '', // 無數據時顯示內容, 空值則使用預設值. + tablePageSizeOptions: [5, 10, 15, 20], // 頁數選擇器可選值. + dataSource: null // 資料源 service. +}; diff --git a/digital-future-summit/src/app/implementation/shared/shared.module.ts b/digital-future-summit/src/app/implementation/shared/shared.module.ts new file mode 100644 index 0000000..7c55c3b --- /dev/null +++ b/digital-future-summit/src/app/implementation/shared/shared.module.ts @@ -0,0 +1,24 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { DwExceptionModule } from '@webdpt/components/exception'; + +/** + * 共享模組 + * + * @export + * @class SharedModule + */ +@NgModule({ + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule + ], + exports: [ + FormsModule, + ReactiveFormsModule, + DwExceptionModule + ] +}) +export class SharedModule { } diff --git a/digital-future-summit/src/app/implementation/style/index.less b/digital-future-summit/src/app/implementation/style/index.less new file mode 100644 index 0000000..ffa2b3b --- /dev/null +++ b/digital-future-summit/src/app/implementation/style/index.less @@ -0,0 +1 @@ +@import './variable.less'; diff --git a/digital-future-summit/src/app/implementation/style/variable.less b/digital-future-summit/src/app/implementation/style/variable.less new file mode 100644 index 0000000..e69de29 diff --git a/digital-future-summit/src/app/implementation/tab-route/model/tab-route-config.ts b/digital-future-summit/src/app/implementation/tab-route/model/tab-route-config.ts new file mode 100644 index 0000000..2b1c018 --- /dev/null +++ b/digital-future-summit/src/app/implementation/tab-route/model/tab-route-config.ts @@ -0,0 +1,10 @@ +// 多頁佈局預設開啟作業 +export const tabRouteConfigJson = [ + { + 'id': 'home', + 'canClose': false, + 'defaultOpen': true, + 'canMultiOpen': false, + 'iconClass': 'dwType:home' + } +]; diff --git a/digital-future-summit/src/app/implementation/tools-routing-wrapper.module.ts b/digital-future-summit/src/app/implementation/tools-routing-wrapper.module.ts new file mode 100644 index 0000000..08faa80 --- /dev/null +++ b/digital-future-summit/src/app/implementation/tools-routing-wrapper.module.ts @@ -0,0 +1,17 @@ +import { NgModule } from '@angular/core'; + +import { DwToolsRoutingModule } from '@webdpt/components/tools-routing'; +import { SharedModule } from './shared/shared.module'; +import { DwCmsRoutingModule } from '@webdpt/programs'; + +@NgModule({ + imports: [ + SharedModule, // 專案的共享模組 + DwToolsRoutingModule, // 平台組件的預設路由模組 + // --------------------------------------------------------- + // | 選配 + // --------------------------------------------------------- + // DwCmsRoutingModule // 平台作業路由 + ] +}) +export class ToolsRoutingWrapper { } diff --git a/digital-future-summit/src/app/industry/industry-routing.module.ts b/digital-future-summit/src/app/industry/industry-routing.module.ts new file mode 100644 index 0000000..c35e880 --- /dev/null +++ b/digital-future-summit/src/app/industry/industry-routing.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +const routes: Routes = []; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class IndustryRoutingModule { } diff --git a/digital-future-summit/src/app/industry/industry.module.ts b/digital-future-summit/src/app/industry/industry.module.ts new file mode 100644 index 0000000..b133026 --- /dev/null +++ b/digital-future-summit/src/app/industry/industry.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + +import { IndustryRoutingModule } from './industry-routing.module'; + +@NgModule({ + imports: [ + CommonModule, + IndustryRoutingModule + ], + declarations: [] +}) +export class IndustryModule { } diff --git a/digital-future-summit/src/app/page-not-found.component.ts b/digital-future-summit/src/app/page-not-found.component.ts new file mode 100644 index 0000000..e32ef0d --- /dev/null +++ b/digital-future-summit/src/app/page-not-found.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-prog001', + template: `

404

` +}) +export class PageNotFoundComponent { + + constructor() { } + + +} diff --git a/digital-future-summit/src/app/routes.ts b/digital-future-summit/src/app/routes.ts new file mode 100644 index 0000000..b4e066d --- /dev/null +++ b/digital-future-summit/src/app/routes.ts @@ -0,0 +1,12 @@ +import { Routes } from '@angular/router'; + +import { CUSTOMIZATION_ROUTES } from './customization/customization-routes'; + +export const MODULE_ROUTES: Routes = [ + { + path: 'dpt', // 路徑為/dpt/* + pathMatch: 'prefix', + loadChildren: (): Promise => import('./implementation/tools-routing-wrapper.module').then(m => m.ToolsRoutingWrapper) + }, + ...CUSTOMIZATION_ROUTES +]; diff --git a/digital-future-summit/src/app/style.less b/digital-future-summit/src/app/style.less new file mode 100644 index 0000000..1877254 --- /dev/null +++ b/digital-future-summit/src/app/style.less @@ -0,0 +1,6 @@ +/* You can add global styles to this file, and also import other style files */ +@webdpt-path: "@webdpt"; +@import "~@{webdpt-path}/components/style/index.less"; +@import "~@{webdpt-path}/programs/style/index.less"; +@import './implementation/style/index.less'; +@import './customization/style/index.less'; diff --git a/digital-future-summit/src/assets/api.dev.json b/digital-future-summit/src/assets/api.dev.json new file mode 100644 index 0000000..52a7096 --- /dev/null +++ b/digital-future-summit/src/assets/api.dev.json @@ -0,0 +1,19 @@ +{ + "apiUrl": "@WEB_SERVICE_URL@", + "iamUrl":"https://iam.digiwincloud.com.cn", + "emcUrl": "@EMC_SERVICE_URL@", + "omUrl": "@OM_URL@", + "consoleUrl": "@CONSOLE_URL@", + "marketUrl": "@MARKET_URL@", + "omcUrl": "@OMC_SERVICE_URL@", + "gmcUrl": "@GMC_SERVICE_URL@", + "cacUrl": "@CAC_SERVICE_URL@", + "frUrl": "@FINEREPORT_URL@", + "dmcUrl": "@DMC_SERVICE_URL@", + "analytics": { + "gtm": "@ANALYTICS_GTM@", + "baidu": "@ANALYTICS_BAIDU@" + }, + "multiTenant": "true", + "dwAppSecret": "@DW_APP_SECRET@" +} diff --git a/digital-future-summit/src/assets/api.json b/digital-future-summit/src/assets/api.json new file mode 100644 index 0000000..52a7096 --- /dev/null +++ b/digital-future-summit/src/assets/api.json @@ -0,0 +1,19 @@ +{ + "apiUrl": "@WEB_SERVICE_URL@", + "iamUrl":"https://iam.digiwincloud.com.cn", + "emcUrl": "@EMC_SERVICE_URL@", + "omUrl": "@OM_URL@", + "consoleUrl": "@CONSOLE_URL@", + "marketUrl": "@MARKET_URL@", + "omcUrl": "@OMC_SERVICE_URL@", + "gmcUrl": "@GMC_SERVICE_URL@", + "cacUrl": "@CAC_SERVICE_URL@", + "frUrl": "@FINEREPORT_URL@", + "dmcUrl": "@DMC_SERVICE_URL@", + "analytics": { + "gtm": "@ANALYTICS_GTM@", + "baidu": "@ANALYTICS_BAIDU@" + }, + "multiTenant": "true", + "dwAppSecret": "@DW_APP_SECRET@" +} diff --git a/digital-future-summit/src/assets/i18n/en_US/basic.json b/digital-future-summit/src/assets/i18n/en_US/basic.json new file mode 100644 index 0000000..b1d1ff7 --- /dev/null +++ b/digital-future-summit/src/assets/i18n/en_US/basic.json @@ -0,0 +1,5 @@ +{ + "prog": { + "lagrge-home": "lagrge-home" + } +} \ No newline at end of file diff --git a/digital-future-summit/src/assets/i18n/en_US/lagrge-home.json b/digital-future-summit/src/assets/i18n/en_US/lagrge-home.json new file mode 100644 index 0000000..e69de29 diff --git a/digital-future-summit/src/assets/i18n/zh_CN/basic.json b/digital-future-summit/src/assets/i18n/zh_CN/basic.json new file mode 100644 index 0000000..d13376c --- /dev/null +++ b/digital-future-summit/src/assets/i18n/zh_CN/basic.json @@ -0,0 +1,5 @@ +{ + "prog": { + "lagrge-home": "大屏首页" + } +} \ No newline at end of file diff --git a/digital-future-summit/src/assets/i18n/zh_CN/lagrge-home.json b/digital-future-summit/src/assets/i18n/zh_CN/lagrge-home.json new file mode 100644 index 0000000..e69de29 diff --git a/digital-future-summit/src/assets/i18n/zh_TW/basic.json b/digital-future-summit/src/assets/i18n/zh_TW/basic.json new file mode 100644 index 0000000..0306040 --- /dev/null +++ b/digital-future-summit/src/assets/i18n/zh_TW/basic.json @@ -0,0 +1,5 @@ +{ + "prog": { + "lagrge-home": "大屏首頁" + } +} \ No newline at end of file diff --git a/digital-future-summit/src/assets/i18n/zh_TW/lagrge-home.json b/digital-future-summit/src/assets/i18n/zh_TW/lagrge-home.json new file mode 100644 index 0000000..e69de29 diff --git a/digital-future-summit/src/assets/icons/icon-128x128.png b/digital-future-summit/src/assets/icons/icon-128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..9f9241f0be40661db1eed29384231e76d33b6e7c GIT binary patch literal 1253 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 A1ONa4 literal 0 HcmV?d00001 diff --git a/digital-future-summit/src/assets/icons/icon-152x152.png b/digital-future-summit/src/assets/icons/icon-152x152.png new file mode 100644 index 0000000000000000000000000000000000000000..34a1a8d645872c776c9425de45c3fcfba12c271e GIT binary patch literal 1427 zcmV;E1#J3>P)0{{R3FC5Sl00004XF*Lt006O% z3;baP00001b5ch_0Itp)=>Px#S5Qn;MNDaN)BrNc058)3FxCJt%K$IW1~u3KFxCJt z*8nrs05IMFFxCJu+yF7w05QV=FWmq!|NsBlCs6RIx%%hq)l6;YNo@Dg+Uk;~=yZ

X{-?>fGCXfYNSFwSa_5FdK zVWbmbiyjU>K0ZD^K0ZD^KL2TsQY8DMN~18(vn<;gTO#sXvhT>_UZ`aLlk6vfOgE>x z$T-hm!ES8PrsW=;^Kr6C!eqm8&oyA1v_kq*?gp^0oQ|86yBTb~R+yAK1#Fd8crAA# znB!KMDR(-UvsRcdcL>ZyD=d{e3TC$zlI3!r%+{YP;V#uJdT7g#Xqm;#0N{kF{1!}pE)7`+j3=Yr=A6bs)`+*fjoG~J)&x^s8 z_jj;s0P7~D{|#2dlPq?GcR}Ua z{+_|MsARG8yA+k{=P%eNDp~OG4wS2UoLa{Ulq`6lc*f+~J&)5nP_iJHz$Vx7307j0 zYyg5u$Q8r*0%Cw98-idFB-dsPRzs2%AXtJtFg3lhQHW%vZLn_oGdTw95XqufBuC^} zpqzrm$Z^33dMyITwR*jMs{qNumm@L#fi)2U)kti#;?W8&*b#JvZYHF1{36S zl>T3^PqJhK7)+ASQD$y?}F88 z9_@nlYJR5FA|6=i{)<^n7pz4J@Fer8w` zTCgqu^~JOcHmrGl7ucESt>yX3@;t&!4|~X?3%0KL#V*(z)}ssdQ1i3H+8(jKyI?0Z h@8jd+Hf^L(!7eV+I8=gXo5oJ1=hR0aT`iN0Qe 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 literal 0 HcmV?d00001 diff --git a/digital-future-summit/src/assets/icons/icon-512x512.png b/digital-future-summit/src/assets/icons/icon-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..51ee297df1cbeb0354814ffe95afa6e4bc86ea23 GIT binary patch literal 5008 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

R~uDKJ~qM@>SAZjZL{IQ7-~kX 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/digital-future-summit/src/assets/img/new-bg.jpg b/digital-future-summit/src/assets/img/new-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a6508bfb2b7a9d949865f4bac11fd748a108e3f1 GIT binary patch literal 1802250 zcmV)}KzqN5P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGmbN~PnbOGLGA9w%&|D{PpK~#8NjQwYL zUB$V^jc*mJm#ywz=p_WOt=_w2$z3j(8d@L(0tti!LJ27(K9x{-gj8<}T1ar>zb+}PcX z;T;_aZ)-(xOB+1(Z3sTxjF7zz2-{t_kh*UNJa;pkw-dp2J1}h4HiT0VGqxja+BOWU-A-*q=+rF;Wf)nz z4YACNnYJBK(-~)eT=gczR&Ii~dMgrZb|7KePUf?m^`lrGHFYB*8HO`2a_Ua@v4i0@ z(^oX>#7*CUcq&$XvR-8ECTcUnYuSeP5XO56owWm@v-cphZa+fi9^^gq^F43^o<|zt z`B^JGPq!oJx2F;O+69EX*^BTGFC+5He;{VnzY(|T-$>l?Z=~%0Z;ageKbWxNe{kcr z|H3WX{)OAN{tI_dcW(VJOx*lmNZwHS;YOm1987@MEuWBAoh`?h`jFrhRxf9u$em%RkIy&Ra@b$*o1_#^++mR zhZHKgY#r0<;4NQ=__DQ#En9==(lv-OT5DCZnt7`cS+d3`qIfmMc=1{zrK5@hRN!hA zqK7Cdf2EBxjLBPx*!)$9qoQ+}pQ~^cVscg?HhU$!8Ox9`X$g`hEjCJ=_%*{NNSw43 z36qz?o4yqBlb2D;5l6*3q0%;Q1>(|IB0h5syxFUen7a;1`CBo(d@rt@dlZwOs7J-C z&A9)qlX&W#Haz*a7Totn3(8(OiCdp&!PvV_Aa&|Nc*}P4KDQt~Zv&ExHzPJ@JtERK zAUty&!q|6M##)AJ5uLXgQMntLUX8HH%$u|h;S*Vxipf;FEeK0zn@MatX`@e38T`%W zY-7l_Dx18S{clCYq|Jy--^{Y@h|gkr@rp;q&*0lyo=)BEbDpFcOWQz4~AtQL}=Cl#`pRZoUxDM-#^2vlxg#V zRFot`Y=3M{F}=>!gdnV$_r3X_E7}q9!F??y$L

TDMkjpoNNgho=byl^q6Vsoan{SNH+}q& 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