Browse Source

feat(4.26):数字未来峰会项目

master
丁翠 7 months ago
parent
commit
00c134c055
208 changed files with 9637 additions and 0 deletions
  1. +12
    -0
      digital-future-summit/.browserslistrc
  2. +14
    -0
      digital-future-summit/.editorconfig
  3. +177
    -0
      digital-future-summit/.eslintrc.json
  4. +51
    -0
      digital-future-summit/.gitignore
  5. +3
    -0
      digital-future-summit/.npmrc
  6. +24
    -0
      digital-future-summit/.vscode/launch.json
  7. +3
    -0
      digital-future-summit/.vscode/settings.json
  8. +28
    -0
      digital-future-summit/README.md
  9. +200
    -0
      digital-future-summit/angular.json
  10. +23
    -0
      digital-future-summit/e2e/src/app.e2e-spec.ts
  11. +11
    -0
      digital-future-summit/e2e/src/app.po.ts
  12. +13
    -0
      digital-future-summit/e2e/tsconfig.json
  13. +36
    -0
      digital-future-summit/karma.conf.js
  14. +10
    -0
      digital-future-summit/ngcc.config.js
  15. +39
    -0
      digital-future-summit/ngsw-config.json
  16. +127
    -0
      digital-future-summit/package.json
  17. +24
    -0
      digital-future-summit/patches/@schematics+update+0.1102.12.patch
  18. +9
    -0
      digital-future-summit/project.config.json
  19. +0
    -0
      digital-future-summit/projects/webdpt/webdpt-packages/.gitkeep
  20. +20
    -0
      digital-future-summit/src/.browserslistrc
  21. +35
    -0
      digital-future-summit/src/app/app-routing.module.ts
  22. +0
    -0
      digital-future-summit/src/app/app.component.css
  23. +29
    -0
      digital-future-summit/src/app/app.component.spec.ts
  24. +13
    -0
      digital-future-summit/src/app/app.component.ts
  25. +42
    -0
      digital-future-summit/src/app/app.module.ts
  26. +9
    -0
      digital-future-summit/src/app/config/app-auth-token.ts
  27. +62
    -0
      digital-future-summit/src/app/config/system-config.ts
  28. +35
    -0
      digital-future-summit/src/app/config/system.module.ts
  29. +11
    -0
      digital-future-summit/src/app/customization/customization-routes.ts
  30. +10
    -0
      digital-future-summit/src/app/customization/customization-routing.module.ts
  31. +13
    -0
      digital-future-summit/src/app/customization/customization.module.ts
  32. +0
    -0
      digital-future-summit/src/app/customization/style/index.less
  33. +26
    -0
      digital-future-summit/src/app/implementation/auth/forget/forget-routing.module.ts
  34. +20
    -0
      digital-future-summit/src/app/implementation/auth/forget/forget.component.css
  35. +19
    -0
      digital-future-summit/src/app/implementation/auth/forget/forget.component.html
  36. +82
    -0
      digital-future-summit/src/app/implementation/auth/forget/forget.component.spec.ts
  37. +26
    -0
      digital-future-summit/src/app/implementation/auth/forget/forget.component.ts
  38. +25
    -0
      digital-future-summit/src/app/implementation/auth/forget/forget.module.ts
  39. +34
    -0
      digital-future-summit/src/app/implementation/auth/login-routing.module.ts
  40. +24
    -0
      digital-future-summit/src/app/implementation/auth/login.module.ts
  41. +30
    -0
      digital-future-summit/src/app/implementation/auth/login/login.component.css
  42. +19
    -0
      digital-future-summit/src/app/implementation/auth/login/login.component.html
  43. +84
    -0
      digital-future-summit/src/app/implementation/auth/login/login.component.spec.ts
  44. +16
    -0
      digital-future-summit/src/app/implementation/auth/login/login.component.ts
  45. +26
    -0
      digital-future-summit/src/app/implementation/home/home-routing.module.ts
  46. +6
    -0
      digital-future-summit/src/app/implementation/home/home.component.css
  47. +3
    -0
      digital-future-summit/src/app/implementation/home/home.component.html
  48. +28
    -0
      digital-future-summit/src/app/implementation/home/home.component.ts
  49. +12
    -0
      digital-future-summit/src/app/implementation/home/home.module.ts
  50. +23
    -0
      digital-future-summit/src/app/implementation/implementation-routes.ts
  51. +46
    -0
      digital-future-summit/src/app/implementation/implementation-routing.module.ts
  52. +77
    -0
      digital-future-summit/src/app/implementation/implementation.module.ts
  53. +15
    -0
      digital-future-summit/src/app/implementation/language/model/language.config.ts
  54. +66
    -0
      digital-future-summit/src/app/implementation/layout/layout.component.html
  55. +159
    -0
      digital-future-summit/src/app/implementation/layout/layout.component.less
  56. +140
    -0
      digital-future-summit/src/app/implementation/layout/layout.component.ts
  57. +76
    -0
      digital-future-summit/src/app/implementation/layout/system.ts
  58. +5
    -0
      digital-future-summit/src/app/implementation/menu/model/menu.config.ts
  59. +1
    -0
      digital-future-summit/src/app/implementation/menu/model/menu.model.ts
  60. +6
    -0
      digital-future-summit/src/app/implementation/program-info/model/program-action.config.ts
  61. +1
    -0
      digital-future-summit/src/app/implementation/program-info/model/program-action.model.ts
  62. +6
    -0
      digital-future-summit/src/app/implementation/program-info/model/program-page.config.ts
  63. +1
    -0
      digital-future-summit/src/app/implementation/program-info/model/program-page.model.ts
  64. +5
    -0
      digital-future-summit/src/app/implementation/program-info/model/program.config.ts
  65. +8
    -0
      digital-future-summit/src/app/implementation/program-info/model/program.model.ts
  66. +0
    -0
      digital-future-summit/src/app/implementation/programs/.gitkeep
  67. +41
    -0
      digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home-routing.module.ts
  68. +3
    -0
      digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.html
  69. +0
    -0
      digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.less
  70. +25
    -0
      digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.spec.ts
  71. +15
    -0
      digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.ts
  72. +17
    -0
      digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.module.ts
  73. +13
    -0
      digital-future-summit/src/app/implementation/programs/large-home/large-home-routing.module.ts
  74. +18
    -0
      digital-future-summit/src/app/implementation/programs/large-home/large-home.module.ts
  75. +117
    -0
      digital-future-summit/src/app/implementation/service/common.service.ts
  76. +4
    -0
      digital-future-summit/src/app/implementation/shared/organize-tree-modal/default.ts
  77. +20
    -0
      digital-future-summit/src/app/implementation/shared/select-modal/default.ts
  78. +24
    -0
      digital-future-summit/src/app/implementation/shared/shared.module.ts
  79. +1
    -0
      digital-future-summit/src/app/implementation/style/index.less
  80. +0
    -0
      digital-future-summit/src/app/implementation/style/variable.less
  81. +10
    -0
      digital-future-summit/src/app/implementation/tab-route/model/tab-route-config.ts
  82. +17
    -0
      digital-future-summit/src/app/implementation/tools-routing-wrapper.module.ts
  83. +10
    -0
      digital-future-summit/src/app/industry/industry-routing.module.ts
  84. +13
    -0
      digital-future-summit/src/app/industry/industry.module.ts
  85. +12
    -0
      digital-future-summit/src/app/page-not-found.component.ts
  86. +12
    -0
      digital-future-summit/src/app/routes.ts
  87. +6
    -0
      digital-future-summit/src/app/style.less
  88. +19
    -0
      digital-future-summit/src/assets/api.dev.json
  89. +19
    -0
      digital-future-summit/src/assets/api.json
  90. +5
    -0
      digital-future-summit/src/assets/i18n/en_US/basic.json
  91. +0
    -0
      digital-future-summit/src/assets/i18n/en_US/lagrge-home.json
  92. +5
    -0
      digital-future-summit/src/assets/i18n/zh_CN/basic.json
  93. +0
    -0
      digital-future-summit/src/assets/i18n/zh_CN/lagrge-home.json
  94. +5
    -0
      digital-future-summit/src/assets/i18n/zh_TW/basic.json
  95. +0
    -0
      digital-future-summit/src/assets/i18n/zh_TW/lagrge-home.json
  96. BIN
      digital-future-summit/src/assets/icons/icon-128x128.png
  97. BIN
      digital-future-summit/src/assets/icons/icon-144x144.png
  98. BIN
      digital-future-summit/src/assets/icons/icon-152x152.png
  99. BIN
      digital-future-summit/src/assets/icons/icon-192x192.png
  100. BIN
      digital-future-summit/src/assets/icons/icon-384x384.png

+ 12
- 0
digital-future-summit/.browserslistrc View File

@ -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'.

+ 14
- 0
digital-future-summit/.editorconfig View File

@ -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

+ 177
- 0
digital-future-summit/.eslintrc.json View File

@ -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": {}
}
]
}

+ 51
- 0
digital-future-summit/.gitignore View File

@ -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

+ 3
- 0
digital-future-summit/.npmrc View File

@ -0,0 +1,3 @@
registry=https://registry.npmmirror.com
unsafe-perm=true
@webdpt:registry=https://repo.digiwincloud.com.cn/maven/repository/npm-webdpt/

+ 24
- 0
digital-future-summit/.vscode/launch.json View File

@ -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": [
"<node_internals>/**"
],
"resolveSourceMapLocations": [
"${workspaceFolder}/**",
"!**/node_modules/**"
],
}
]
}

+ 3
- 0
digital-future-summit/.vscode/settings.json View File

@ -0,0 +1,3 @@
{
"typescript.tsdk": "node_modules\\typescript\\lib"
}

+ 28
- 0
digital-future-summit/README.md View File

@ -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).

+ 200
- 0
digital-future-summit/angular.json View File

@ -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"
}
}

+ 23
- 0
digital-future-summit/e2e/src/app.e2e-spec.ts View File

@ -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));
});
});

+ 11
- 0
digital-future-summit/e2e/src/app.po.ts View File

@ -0,0 +1,11 @@
import { browser, by, element } from 'protractor';
export class AppPage {
navigateTo(): Promise<any> {
return browser.get(browser.baseUrl) as Promise<any>;
}
getTitleText(): Promise<string> {
return element(by.css('app-root')).getText() as Promise<string>;
}
}

+ 13
- 0
digital-future-summit/e2e/tsconfig.json View File

@ -0,0 +1,13 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/e2e",
"module": "commonjs",
"target": "es2015",
"types": [
"jasmine",
"jasminewd2",
"node"
]
}
}

+ 36
- 0
digital-future-summit/karma.conf.js View File

@ -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
});
};

+ 10
- 0
digital-future-summit/ngcc.config.js View File

@ -0,0 +1,10 @@
module.exports = {
packages: {
'@webdpt/components': {
ignorableDeepImportMatchers: [
/ng-quicksilver\/date-picker\/standard-types/,
/iv-viewer\//
]
}
},
};

+ 39
- 0
digital-future-summit/ngsw-config.json View File

@ -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"
}
}
]
}

+ 127
- 0
digital-future-summit/package.json View File

@ -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"
}
}

+ 24
- 0
digital-future-summit/patches/@schematics+update+0.1102.12.patch View File

@ -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": {

+ 9
- 0
digital-future-summit/project.config.json View File

@ -0,0 +1,9 @@
{
"envType": "angular",
"dap": {
"enabled": true
},
"athena": {
"enabled": false
}
}

+ 0
- 0
digital-future-summit/projects/webdpt/webdpt-packages/.gitkeep View File


+ 20
- 0
digital-future-summit/src/.browserslistrc View File

@ -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.

+ 35
- 0
digital-future-summit/src/app/app-routing.module.ts View File

@ -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<any> => 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 {
}

+ 0
- 0
digital-future-summit/src/app/app.component.css View File


+ 29
- 0
digital-future-summit/src/app/app.component.spec.ts View File

@ -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();
}));
});

+ 13
- 0
digital-future-summit/src/app/app.component.ts View File

@ -0,0 +1,13 @@
import { Component } from '@angular/core';
import { DwLanguageService } from '@webdpt/framework/language';
@Component({
selector: 'app-root',
template: `
<router-outlet></router-outlet>
`,
styleUrls: ['./app.component.css']
})
export class AppComponent {
constructor(langService: DwLanguageService) {}
}

+ 42
- 0
digital-future-summit/src/app/app.module.ts View File

@ -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 {}

+ 9
- 0
digital-future-summit/src/app/config/app-auth-token.ts View File

@ -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";

+ 62
- 0
digital-future-summit/src/app/config/system-config.ts View File

@ -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;
}
}

+ 35
- 0
digital-future-summit/src/app/config/system.module.ts View File

@ -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<SystemModule> {
return {
ngModule: SystemModule,
providers: [
{
provide: DW_MOCK,
useValue: environment.mock
},
{
provide: DW_APP_AUTH_TOKEN,
useValue: DigiMiddlewareAuthApp
},
...providers
]
};
}
}

+ 11
- 0
digital-future-summit/src/app/customization/customization-routes.ts View File

@ -0,0 +1,11 @@
import { Routes } from '@angular/router';
import { IMPLEMENTATION_ROUTES } from '../implementation/implementation-routes';
export const CUSTOMIZATION_ROUTES: Routes = [
// 設定客製應用模組路由
// 應用開發應用模組路由
...IMPLEMENTATION_ROUTES
];

+ 10
- 0
digital-future-summit/src/app/customization/customization-routing.module.ts View File

@ -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 { }

+ 13
- 0
digital-future-summit/src/app/customization/customization.module.ts View File

@ -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 { }

+ 0
- 0
digital-future-summit/src/app/customization/style/index.less View File


+ 26
- 0
digital-future-summit/src/app/implementation/auth/forget/forget-routing.module.ts View File

@ -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 {
}

+ 20
- 0
digital-future-summit/src/app/implementation/auth/forget/forget.component.css View File

@ -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;
}

+ 19
- 0
digital-future-summit/src/app/implementation/auth/forget/forget.component.html View File

@ -0,0 +1,19 @@
<div nz-row class="forget-bg">
<div nz-col [nzSpan]="24" class="forget-content">
<div nz-row class="forget-main-block">
<div nz-col [nzXs]="'8'" [nzSm]="'8'" [nzMd]="'9'" [nzLg]="'9'">
</div>
<div nz-col [nzXs]="'8'" [nzSm]="'8'" [nzMd]="'6'" [nzLg]="'6'">
<img class="forget-logo" src="{{dwLogoPath | translate}}">
<dw-forget-block [verificationType]="verificationType"></dw-forget-block>
</div>
<div nz-col [nzXs]="'8'" [nzSm]="'8'" [nzMd]="'9'" [nzLg]="'9'">
</div>
</div>
<div nz-row class="forget-copyright-block">
<div nz-col [nzSpan]="24" class="forget-copyright">
<span>© Data Systems Consulting Co., Ltd. All rights reserved.</span>
</div>
</div>
</div>
</div>

+ 82
- 0
digital-future-summit/src/app/implementation/auth/forget/forget.component.spec.ts View File

@ -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<ForgetComponent>;
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<T>(key: T): Observable<T> {
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: `
<div>MockDwForgetBlockComponent</div>
`
})
export class MockDwForgetBlockComponent {
@Input() verificationType: any;
}

+ 26
- 0
digital-future-summit/src/app/implementation/auth/forget/forget.component.ts View File

@ -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<IDwForgetverificationType> = [];
constructor(
@Inject(Logo_Path) public dwLogoPath: string
) { }
ngOnInit(): void {
this.verificationType = [
IDwForgetverificationType.EMAIL,
IDwForgetverificationType.MOBILEPHONE
];
}
}

+ 25
- 0
digital-future-summit/src/app/implementation/auth/forget/forget.module.ts View File

@ -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 { }

+ 34
- 0
digital-future-summit/src/app/implementation/auth/login-routing.module.ts View File

@ -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 {
}

+ 24
- 0
digital-future-summit/src/app/implementation/auth/login.module.ts View File

@ -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 { }

+ 30
- 0
digital-future-summit/src/app/implementation/auth/login/login.component.css View File

@ -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;
}

+ 19
- 0
digital-future-summit/src/app/implementation/auth/login/login.component.html View File

@ -0,0 +1,19 @@
<div nz-row class="login-bg">
<div nz-col nzSpan="24" class="login-content">
<div nz-row class="login-main-block">
<div nz-col [nzXs]="'8'" [nzSm]="'8'" [nzMd]="'9'" [nzLg]="'9'">
</div>
<div nz-col [nzXs]="'8'" [nzSm]="'8'" [nzMd]="'6'" [nzLg]="'6'" style="z-index: 1">
<img class="login-logo" src="{{dwLogoPath | translate}}">
<dw-login-block [showRemember]="true" [showLanguage]="true"></dw-login-block>
</div>
<div nz-col [nzXs]="'8'" [nzSm]="'8'" [nzMd]="'9'" [nzLg]="'9'">
</div>
</div>
<div nz-row class="login-copyright-block" nzJustify="center">
<div nz-col nzSpan="24" class="login-copyright">
<span>© Data Systems Consulting Co., Ltd. All rights reserved.</span>
</div>
</div>
</div>
</div>

+ 84
- 0
digital-future-summit/src/app/implementation/auth/login/login.component.spec.ts View File

@ -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<LoginComponent>;
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<T>(key: T): Observable<T> {
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: `
<div>mockLoginComponent</div>
`
})
export class MockLoginComponent {
@Input() showRemember;
@Input() showLanguage;
}

+ 16
- 0
digital-future-summit/src/app/implementation/auth/login/login.component.ts View File

@ -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,
) { }
}

+ 26
- 0
digital-future-summit/src/app/implementation/home/home-routing.module.ts View File

@ -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 { }

+ 6
- 0
digital-future-summit/src/app/implementation/home/home.component.css View File

@ -0,0 +1,6 @@
::ng-deep .dw-f-header {
display: none;
}
::ng-deep .dw-f-menusider {
display: none;
}

+ 3
- 0
digital-future-summit/src/app/implementation/home/home.component.html View File

@ -0,0 +1,3 @@
<p (click)="toLink()">
home works!
</p>

+ 28
- 0
digital-future-summit/src/app/implementation/home/home.component.ts View File

@ -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);
}
}

+ 12
- 0
digital-future-summit/src/app/implementation/home/home.module.ts View File

@ -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 {}

+ 23
- 0
digital-future-summit/src/app/implementation/implementation-routes.ts View File

@ -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<any> =>
// 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
// ),
// },
];

+ 46
- 0
digital-future-summit/src/app/implementation/implementation-routing.module.ts View File

@ -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<any> =>
import("./auth/login.module").then((m) => m.LoginModule),
},
{
path: "forget",
pathMatch: "full",
loadChildren: (): Promise<any> =>
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 {}

+ 77
- 0
digital-future-summit/src/app/implementation/implementation.module.ts View File

@ -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<ImplementationModule> {
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,
],
};
}
}

+ 15
- 0
digital-future-summit/src/app/implementation/language/model/language.config.ts View File

@ -0,0 +1,15 @@
// 可用語言清單靜態設定檔
export const languageList = [
{
'value': 'en_US',
'label': 'English'
},
{
'value': 'zh_CN',
'label': '简体'
},
{
'value': 'zh_TW',
'label': '繁體'
}
];

+ 66
- 0
digital-future-summit/src/app/implementation/layout/layout.component.html View File

@ -0,0 +1,66 @@
<!-- <ng-template #headerRightActionTemplate>
自訂headerRightActionTemplate
</ng-template> -->
<div class="layout-box">
<!-- <div class="get-token-box" (click)="toLinkSystem()">
sid请求token跳转
</div> -->
<!-- <dw-layout-app>
<dw-layout-basic-side [collapsedWidth]="0" [breakpoint]="'lg'" [routeSelectMenu]="false"
>
</dw-layout-basic-side>
</dw-layout-app> -->
<div class="top-box">
<div class="top-system-content ">
<div class="system-box "(click)="toLinkSystem('partsCloud')">
<span style="color:#fff;opacity: 1;">零部件云</span>
</div>
</div>
</div>
<div class="center-box">
<div class="system-content div-position1">
<div class="system-box "(click)="toLinkSystem('DMP')">
<span style="color:#fff;opacity: 1;">数据中台</span>
</div>
</div>
<div class="system-content div-position2 ">
<div class="system-box"(click)="toLinkSystem('chatFile')">
<span style="color:#fff;opacity: 1;">chatFile</span>
</div>
</div>
<div class="system-content div-position3 ">
<div class="system-box"(click)="toLinkSystem('KMO')">
<span style="color:#fff;opacity: 1;">知识中台</span>
</div>
</div>
<div class="system-content div-position4 ">
<div class="system-box"(click)="toLinkSystem('EIP')">
<span style="color:#fff;opacity: 1;">智驱工作台</span>
</div>
</div>
<div class="system-content div-position5 ">
<div class="system-box"(click)="toLinkSystem('AIOT')">
<span style="color:#fff;opacity: 1;">AIOT</span>
</div>
</div>
<div class="system-content div-position6 ">
<div class="system-box"(click)="toLinkSystem('equipmentCloud')">
<span style="color:#fff;opacity: 1;">装备云</span>
</div>
</div>
</div>
<div class="bottom-box">
<div class="bottom-system-content ">
<div class="system-box"(click)="toLinkSystem('E10229')">
<span style="color:#fff;opacity: 1;">E10</span>
</div>
</div>
<div class="bottom-system-content ">
<div class="system-box"(click)="toLinkSystem('T100bs')">
<span style="color:#fff;opacity: 1;">T100</span>
</div>
</div>
</div>
</div>

+ 159
- 0
digital-future-summit/src/app/implementation/layout/layout.component.less View File

@ -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倍 */
// }

+ 140
- 0
digital-future-summit/src/app/implementation/layout/layout.component.ts View File

@ -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);
}
}
}

+ 76
- 0
digital-future-summit/src/app/implementation/layout/system.ts View File

@ -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,
},
};

+ 5
- 0
digital-future-summit/src/app/implementation/menu/model/menu.config.ts View File

@ -0,0 +1,5 @@
import { menuData } from './menu.model'; // Menu靜態設定檔
export const menuJson = [
...menuData
];

+ 1
- 0
digital-future-summit/src/app/implementation/menu/model/menu.model.ts View File

@ -0,0 +1 @@
export const menuData = [];

+ 6
- 0
digital-future-summit/src/app/implementation/program-info/model/program-action.config.ts View File

@ -0,0 +1,6 @@
import { programActionData } from './program-action.model';
export const programActionInfoJson = [
...programActionData // ProgramAction靜態設定檔
];

+ 1
- 0
digital-future-summit/src/app/implementation/program-info/model/program-action.model.ts View File

@ -0,0 +1 @@
export const programActionData = [];

+ 6
- 0
digital-future-summit/src/app/implementation/program-info/model/program-page.config.ts View File

@ -0,0 +1,6 @@
import { programPageData } from './program-page.model';
export const programPageInfoJson = [
...programPageData // ProgramPage靜態設定檔
];

+ 1
- 0
digital-future-summit/src/app/implementation/program-info/model/program-page.model.ts View File

@ -0,0 +1 @@
export const programPageData = [];

+ 5
- 0
digital-future-summit/src/app/implementation/program-info/model/program.config.ts View File

@ -0,0 +1,5 @@
import { programData } from './program.model';
export const programInfoJson = [
...programData, // Program靜態設定檔
];

+ 8
- 0
digital-future-summit/src/app/implementation/program-info/model/program.model.ts View File

@ -0,0 +1,8 @@
export const programData = [
{
'id': 'home',
'module': 'root', // 沒有模組歸屬不做模組切分,不上傳到IAM做權限控管
'type': '',
'routerLink': '/'
},
];

+ 0
- 0
digital-future-summit/src/app/implementation/programs/.gitkeep View File


+ 41
- 0
digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home-routing.module.ts View File

@ -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 { }

+ 3
- 0
digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.html View File

@ -0,0 +1,3 @@
<div>
自定义
</div>

+ 0
- 0
digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.less View File


+ 25
- 0
digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.spec.ts View File

@ -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<LagrgeHomeComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ LagrgeHomeComponent ]
})
.compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(LagrgeHomeComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

+ 15
- 0
digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.component.ts View File

@ -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 {
}
}

+ 17
- 0
digital-future-summit/src/app/implementation/programs/large-home/lagrge-home/lagrge-home.module.ts View File

@ -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 { }

+ 13
- 0
digital-future-summit/src/app/implementation/programs/large-home/large-home-routing.module.ts View File

@ -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 { }

+ 18
- 0
digital-future-summit/src/app/implementation/programs/large-home/large-home.module.ts View File

@ -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 { }

+ 117
- 0
digital-future-summit/src/app/implementation/service/common.service.ts View File

@ -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
);
});
}
}

+ 4
- 0
digital-future-summit/src/app/implementation/shared/organize-tree-modal/default.ts View File

@ -0,0 +1,4 @@
import { IDwOrgTreeDefault } from '@webdpt/framework/organize-tree-core';
import { NzTreeNode } from 'ng-zorro-antd/tree';
export const openOrgTreeModalDefault: IDwOrgTreeDefault<NzTreeNode> = {};

+ 20
- 0
digital-future-summit/src/app/implementation/shared/select-modal/default.ts View File

@ -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.
};

+ 24
- 0
digital-future-summit/src/app/implementation/shared/shared.module.ts View File

@ -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 { }

+ 1
- 0
digital-future-summit/src/app/implementation/style/index.less View File

@ -0,0 +1 @@
@import './variable.less';

+ 0
- 0
digital-future-summit/src/app/implementation/style/variable.less View File


+ 10
- 0
digital-future-summit/src/app/implementation/tab-route/model/tab-route-config.ts View File

@ -0,0 +1,10 @@
// 多頁佈局預設開啟作業
export const tabRouteConfigJson = [
{
'id': 'home',
'canClose': false,
'defaultOpen': true,
'canMultiOpen': false,
'iconClass': 'dwType:home'
}
];

+ 17
- 0
digital-future-summit/src/app/implementation/tools-routing-wrapper.module.ts View File

@ -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 { }

+ 10
- 0
digital-future-summit/src/app/industry/industry-routing.module.ts View File

@ -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 { }

+ 13
- 0
digital-future-summit/src/app/industry/industry.module.ts View File

@ -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 { }

+ 12
- 0
digital-future-summit/src/app/page-not-found.component.ts View File

@ -0,0 +1,12 @@
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-prog001',
template: `<h1>404</h1>`
})
export class PageNotFoundComponent {
constructor() { }
}

+ 12
- 0
digital-future-summit/src/app/routes.ts View File

@ -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<any> => import('./implementation/tools-routing-wrapper.module').then(m => m.ToolsRoutingWrapper)
},
...CUSTOMIZATION_ROUTES
];

+ 6
- 0
digital-future-summit/src/app/style.less View File

@ -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';

+ 19
- 0
digital-future-summit/src/assets/api.dev.json View File

@ -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@"
}

+ 19
- 0
digital-future-summit/src/assets/api.json View File

@ -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@"
}

+ 5
- 0
digital-future-summit/src/assets/i18n/en_US/basic.json View File

@ -0,0 +1,5 @@
{
"prog": {
"lagrge-home": "lagrge-home"
}
}

+ 0
- 0
digital-future-summit/src/assets/i18n/en_US/lagrge-home.json View File


+ 5
- 0
digital-future-summit/src/assets/i18n/zh_CN/basic.json View File

@ -0,0 +1,5 @@
{
"prog": {
"lagrge-home": "大屏首页"
}
}

+ 0
- 0
digital-future-summit/src/assets/i18n/zh_CN/lagrge-home.json View File


+ 5
- 0
digital-future-summit/src/assets/i18n/zh_TW/basic.json View File

@ -0,0 +1,5 @@
{
"prog": {
"lagrge-home": "大屏首頁"
}
}

+ 0
- 0
digital-future-summit/src/assets/i18n/zh_TW/lagrge-home.json View File


BIN
digital-future-summit/src/assets/icons/icon-128x128.png View File

Before After
Width: 128  |  Height: 128  |  Size: 1.2 KiB

BIN
digital-future-summit/src/assets/icons/icon-144x144.png View File

Before After
Width: 144  |  Height: 144  |  Size: 1.4 KiB

BIN
digital-future-summit/src/assets/icons/icon-152x152.png View File

Before After
Width: 152  |  Height: 152  |  Size: 1.4 KiB

BIN
digital-future-summit/src/assets/icons/icon-192x192.png View File

Before After
Width: 192  |  Height: 192  |  Size: 1.7 KiB

BIN
digital-future-summit/src/assets/icons/icon-384x384.png View File

Before After
Width: 384  |  Height: 384  |  Size: 3.5 KiB

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save