Browse Source

1. 修复部分 bug

main
wangshaoping 1 month ago
parent
commit
9b1b72f108
  1. 2068
      app.irbs/src/main/java/org/flowable/common/engine/impl/AbstractEngineConfiguration.java
  2. 1
      build-version.gradle
  3. 3
      build.gradle
  4. 5
      gradle.properties
  5. 1
      irbs.frontend/.editorconfig
  6. 94
      irbs.frontend/.eslintrc.cjs
  7. 1
      irbs.frontend/.gitignore
  8. 6
      irbs.frontend/.npmrc
  9. 10
      irbs.frontend/package.json
  10. 67
      irbs.frontend/public/configure.js
  11. 66
      irbs.frontend/public/index.html
  12. BIN
      irbs.frontend/public/login-bg.jpg
  13. BIN
      irbs.frontend/public/webjars/mathfonts/1.0.0/Asana/Asana-Math.woff2
  14. 40
      irbs.frontend/public/webjars/mathfonts/1.0.0/Asana/mathfonts.css
  15. 63
      irbs.frontend/public/webjars/tailwindcss/3.3.5/tailwindcss.js
  16. 62
      irbs.frontend/public/webjars/tailwindcss/3.4.5/tailwind.css.js
  17. 6
      irbs.frontend/src/boostrap.ts
  18. 20
      irbs.frontend/src/components/index.ts
  19. 1
      irbs.shrcb.poc.frontend/.editorconfig
  20. 94
      irbs.shrcb.poc.frontend/.eslintrc.cjs
  21. 1
      irbs.shrcb.poc.frontend/.gitignore
  22. 10
      irbs.shrcb.poc.frontend/package.json
  23. 67
      irbs.shrcb.poc.frontend/public/configure.js
  24. 39
      irbs.shrcb.poc.frontend/public/index.html
  25. BIN
      irbs.shrcb.poc.frontend/public/login-bg.jpg
  26. BIN
      irbs.shrcb.poc.frontend/public/webjars/mathfonts/1.0.0/Asana/Asana-Math.woff2
  27. 40
      irbs.shrcb.poc.frontend/public/webjars/mathfonts/1.0.0/Asana/mathfonts.css
  28. 63
      irbs.shrcb.poc.frontend/public/webjars/tailwindcss/3.3.5/tailwindcss.js
  29. 62
      irbs.shrcb.poc.frontend/public/webjars/tailwindcss/3.4.5/tailwind.css.js
  30. 6
      irbs.shrcb.poc.frontend/src/boostrap.ts
  31. 24
      settings.gradle

2068
app.irbs/src/main/java/org/flowable/common/engine/impl/AbstractEngineConfiguration.java

File diff suppressed because it is too large

1
build-version.gradle

@ -14,6 +14,7 @@ ext['PlatformDependencyVersions'] =[
"org.codehaus.groovy:groovy-json" : "3.0.19", "org.codehaus.groovy:groovy-json" : "3.0.19",
"org.codehaus.groovy:groovy-sql" : "3.0.19", "org.codehaus.groovy:groovy-sql" : "3.0.19",
"org.codehaus.groovy:groovy-xml" : "3.0.19", "org.codehaus.groovy:groovy-xml" : "3.0.19",
"mysql:mysql-connector-java" : "${jdbc_mysql_version}",
]; ];
/*********************************************************************** /***********************************************************************

3
build.gradle

@ -50,9 +50,6 @@ subprojects {
//resolutionStrategy.cacheChangingModulesFor 0, 'seconds' //: 1.1.2 //resolutionStrategy.cacheChangingModulesFor 0, 'seconds' //: 1.1.2
// //
// exclude group: "org.apache.logging.log4j", module: "log4j-api"
// exclude group: "org.apache.logging.log4j", module: "log4j-to-slf4j"
// exclude group: "org.slf4j", module: "slf4j-jdk14"
exclude group: "org.slf4j", module: "slf4j-nop" exclude group: "org.slf4j", module: "slf4j-nop"
resolutionStrategy.eachDependency { DependencyResolveDetails detail -> resolutionStrategy.eachDependency { DependencyResolveDetails detail ->

5
gradle.properties

@ -38,7 +38,7 @@ application_version=1.0.1
platform_group=io.sc platform_group=io.sc
platform_version=8.2.7 platform_version=8.2.7
platform_plugin_version=8.2.7 platform_plugin_version=8.2.7
platform_core_frontend_version=8.2.32 platform_core_frontend_version=8.2.33
########################################################### ###########################################################
# product dependencies version # product dependencies version
@ -67,6 +67,7 @@ jasypt_version=2.1.2
jboss_logging_version=3.3.2.Final jboss_logging_version=3.3.2.Final
jcommander_version=1.82 jcommander_version=1.82
jdbc_dm_version=8.1.2.192 jdbc_dm_version=8.1.2.192
jdbc_mysql_version=5.1.49
jib_version=3.3.2 jib_version=3.3.2
jjwt_version=0.9.1 jjwt_version=0.9.1
jxls_jexcel_version=1.0.7 jxls_jexcel_version=1.0.7
@ -94,4 +95,4 @@ zip4j_version=2.11.5
########################################################### ###########################################################
# asciidoc deploy directory,the path must end with '/' # asciidoc deploy directory,the path must end with '/'
########################################################### ###########################################################
asciidoc_deploy_dir=D:/work/path/nginx-1.16.1/web/ asciidoc_deploy_dir=/Users/wangshaoping/wspsc/website/www/books/

1
irbs.frontend/.editorconfig

@ -10,5 +10,6 @@ root = true
charset = utf-8 # 字符集: utf-8 charset = utf-8 # 字符集: utf-8
indent_size = 2 # 缩进大小: 2 indent_size = 2 # 缩进大小: 2
indent_style = space # 缩进风格: 空格 indent_style = space # 缩进风格: 空格
end_of_line = lf # 行结束符: 换行符
insert_final_newline = true # 是否在文件的最后插入一个空行 insert_final_newline = true # 是否在文件的最后插入一个空行
trim_trailing_whitespace = true # 是否删除行尾的空格 trim_trailing_whitespace = true # 是否删除行尾的空格

94
irbs.frontend/.eslintrc.cjs

@ -1,37 +1,71 @@
module.exports = { module.exports = {
root: true, // https://eslint.org/docs/user-guide/configuring#configuration-cascading-and-hierarchy
// This option interrupts the configuration hierarchy at this file
// Remove this if you have an higher level ESLint config file (it usually happens into a monorepos)
root: true,
env: { env: {
browser: true, browser: true,
es2022: true, es2022: true,
"vue/setup-compiler-macros": true, node: true,
}, 'vue/setup-compiler-macros': true,
},
parserOptions:{ // Rules order is important, please avoid shuffling them
ecmaVersion: 2022, extends: [
sourceType:"module", // Base ESLint recommended rules
}, 'eslint:recommended',
extends:[ // https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin#usage
"eslint:recommended", // ESLint typescript rules
"plugin:vue/vue3-recommended", 'plugin:@typescript-eslint/recommended',
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended", // Vue ESLint recommended rules
], // 'plugin:vue/vue3-essential', // Priority A: Essential (Error Prevention)
// 'plugin:vue/vue3-strongly-recommended', // Priority B: Strongly Recommended (Improving Readability)
parser: "vue-eslint-parser", // 'plugin:vue/vue3-recommended', // Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead)
parserOptions: { 'plugin:vue/vue3-recommended',
ecmaVersion: 2022,
parser: "@typescript-eslint/parser", // https://github.com/prettier/eslint-config-prettier#installation
sourceType: "module", // usage with Prettier, provided by 'eslint-config-prettier'.
}, 'plugin:prettier/recommended', // Recommended
],
rules:{ parser: 'vue-eslint-parser',
'semi':[1], parserOptions: {
'@typescript-eslint/no-var-requires': 'off', ecmaVersion: 2022,
'@typescript-eslint/no-explicit-any': 'off', parser: '@typescript-eslint/parser',
"@typescript-eslint/no-unused-vars": 'off', ecmaFeatures: {
'vue/multi-word-component-names': 'off', /* 禁用 vue 组件名称检查规则 */ jsx: false,
'no-prototype-builtins': 'off',
}, },
},
plugins: [
// required to apply rules which need type information
'@typescript-eslint',
// https://eslint.vuejs.org/user-guide/#why-doesn-t-it-work-on-vue-files
// required to lint *.vue files
'vue',
// https://github.com/typescript-eslint/typescript-eslint/issues/389#issuecomment-509292674
// Prettier has not been included as plugin to avoid performance impact
// add it as an extension for your IDE
],
rules: {
semi: [1],
'@typescript-eslint/no-var-requires': 'off',
'@typescript-eslint/no-empty-object-type': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unused-expressions': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-this-alias': 'off',
'vue/multi-word-component-names': 'off' /* 禁用 vue 组件名称检查规则 */,
'no-prototype-builtins': 'off',
'prefer-rest-params': 'off',
'no-control-regex': 'off',
'no-case-declarations': 'off',
'vue/no-v-html': 'off'
},
}; };

1
irbs.frontend/.gitignore

@ -26,6 +26,7 @@ coverage
*.njsproj *.njsproj
*.sln *.sln
*.sw? *.sw?
.vuepress
test-results/ test-results/
playwright-report/ playwright-report/

6
irbs.frontend/.npmrc

@ -1,5 +1,5 @@
# npm 仓库地址, 在 npm install 时使用 # npm 仓库地址, 在 npm install 时使用
registry=http://58.33.84.154:8000/repository/npm-public/ registry=http://nexus.sc.io:8000/repository/npm-public/
# 用户邮箱 # 用户邮箱
email= email=
@ -9,5 +9,5 @@ git-checks=false
# 注意: 以下 // 不是注释,不能去掉哦 # 注意: 以下 // 不是注释,不能去掉哦
# 登录 npm 仓库的用户认证信息, 在 npm publish 时使用, publish 的 npm registry 在 package.json 文件中 publishConfig 部分配置 # 登录 npm 仓库的用户认证信息, 在 npm publish 时使用, publish 的 npm registry 在 package.json 文件中 publishConfig 部分配置
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://58.33.84.154:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
//58.33.84.154:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.67c99588-56a6-3ce1-9bea-a9a6164f8090

10
irbs.frontend/package.json

@ -72,7 +72,7 @@
"webpack-merge": "6.0.1" "webpack-merge": "6.0.1"
}, },
"dependencies": { "dependencies": {
"@codemirror/autocomplete": "6.18.3", "@codemirror/autocomplete": "6.18.4",
"@codemirror/commands": "6.7.1", "@codemirror/commands": "6.7.1",
"@codemirror/lang-html": "6.4.9", "@codemirror/lang-html": "6.4.9",
"@codemirror/lang-java": "6.0.1", "@codemirror/lang-java": "6.0.1",
@ -80,10 +80,10 @@
"@codemirror/lang-json": "6.0.1", "@codemirror/lang-json": "6.0.1",
"@codemirror/lang-sql": "6.8.0", "@codemirror/lang-sql": "6.8.0",
"@codemirror/lang-xml": "6.1.0", "@codemirror/lang-xml": "6.1.0",
"@codemirror/language": "6.10.4", "@codemirror/language": "6.10.8",
"@codemirror/search": "6.5.8", "@codemirror/search": "6.5.8",
"@codemirror/state": "6.4.1", "@codemirror/state": "6.5.0",
"@codemirror/view": "6.35.0", "@codemirror/view": "6.36.1",
"@maxgraph/core": "0.13.1", "@maxgraph/core": "0.13.1",
"@quasar/extras": "1.16.13", "@quasar/extras": "1.16.13",
"@univerjs/core": "0.5.0", "@univerjs/core": "0.5.0",
@ -110,7 +110,7 @@
"mockjs": "1.1.0", "mockjs": "1.1.0",
"node-sql-parser": "5.3.4", "node-sql-parser": "5.3.4",
"pinia": "2.2.6", "pinia": "2.2.6",
"platform-core": "8.2.32", "platform-core": "8.2.33",
"quasar": "2.17.4", "quasar": "2.17.4",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.5", "svg-path-commander": "2.1.5",

67
irbs.frontend/public/configure.js

@ -1,30 +1,43 @@
// 在浏览器 window 对象中新建名为 APP 的容器变量, 用于存放平台的全局变量 // 在浏览器 window 对象中新建名为 APP 的容器变量, 用于存放平台的全局变量
window.APP = {}; window.APP = {};
// 全局配置 // 全局配置
window.APP.configure ={ window.APP.configure = {
// 应用上下文路径 // 项目名称
webContextPath: '[(@{/})]'.startsWith('[')? '/' : '[(@{/})]', projectName: '',
// 默认后端 API 请求的服务地址前缀
apiContextPaths: { // 应用上下文路径
DEFAULT: '[(@{/})]'.startsWith('[')? 'http://localhost:8080/' : '[(@{/})]', webContextPath: '[(@{/})]'.startsWith('[') ? '/' : '[(@{/})]',
},
// 是否启用本地 mock // 默认后端 API 请求的服务地址前缀
enableLocalMock : false, apiContextPaths: {
// mock 请求响应时间(单位:毫秒) DEFAULT: '[(@{/})]'.startsWith('[') ? 'http://localhost:8080/' : '[(@{/})]',
localMockTimeout : 10, },
// 是否启用使用远程服务端配置
enableRemoteConfigure : true, // 前端运行环境
// 是否首先使用本地路由 // alone: 前端独立部署, 即前端打包后独立部署于 web 服务上(如: nginx, caddy 等)
useLocaleRouterFirst : true, // develop: 前端运行在开发环境, 即前端在开发环境下运行(如: webpack)
// axios 配置 // backend: 前端运行在后端环境, 即前后端一起打包后部署在应用服务器上(如: tomcat, undertow, jeety等)
axios : { fontendScenario: 'develop',
baseURL: '',
timeout: 1000 * 60, // router 历史模式
crossdomain: true, routerHistoryMode: 'hash',
basicAuth: {
enable: true, // 是否启用本地 mock
username: 'admin', enableLocalMock: false,
password: 'admin',
} // mock 请求响应时间(单位:毫秒)
} localMockTimeout: 10,
}
// 是否启用使用远程服务端配置
enableRemoteConfigure: true,
// 是否首先使用本地路由
useLocaleRouterFirst: true,
// axios 配置
axios: {
baseURL: '',
timeout: 1000 * 60,
crossdomain: true,
},
};

66
irbs.frontend/public/index.html

@ -1,24 +1,58 @@
<!DOCTYPE html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- luckysheet css --> <!-- luckysheet css -->
<link rel="stylesheet" href="/webjars/luckysheet/2.1.13/plugins/css/pluginsCss.css" th:href="@{/webjars/luckysheet/2.1.13/plugins/css/pluginsCss.css}"/> <link rel="stylesheet" href="/webjars/luckysheet/2.1.13/plugins/css/pluginsCss.css" th:href="@{/webjars/luckysheet/2.1.13/plugins/css/pluginsCss.css}" />
<link rel="stylesheet" href="/webjars/luckysheet/2.1.13/plugins/plugins.css" th:href="@{/webjars/luckysheet/2.1.13/plugins/plugins.css}"/> <link rel="stylesheet" href="/webjars/luckysheet/2.1.13/plugins/plugins.css" th:href="@{/webjars/luckysheet/2.1.13/plugins/plugins.css}" />
<link rel="stylesheet" href="/webjars/luckysheet/2.1.13/css/luckysheet.css" th:href="@{/webjars/luckysheet/2.1.13/css/luckysheet.css}"/> <link rel="stylesheet" href="/webjars/luckysheet/2.1.13/css/luckysheet.css" th:href="@{/webjars/luckysheet/2.1.13/css/luckysheet.css}" />
<link rel="stylesheet" href="/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.css" th:href="@{/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.css}"/> <link
rel="stylesheet"
href="/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.css"
th:href="@{/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.css}"
/>
<!-- luckysheet js --> <!-- luckysheet js -->
<script src="/webjars/luckysheet/2.1.13/plugins/js/plugin.js" th:src="@{/webjars/luckysheet/2.1.13/plugins/js/plugin.js}"></script> <script src="/webjars/luckysheet/2.1.13/plugins/js/plugin.js" th:src="@{/webjars/luckysheet/2.1.13/plugins/js/plugin.js}"></script>
<script src="/webjars/luckysheet/2.1.13/luckysheet.umd.js" th:src="@{/webjars/luckysheet/2.1.13/luckysheet.umd.js}"></script> <script src="/webjars/luckysheet/2.1.13/luckysheet.umd.js" th:src="@{/webjars/luckysheet/2.1.13/luckysheet.umd.js}"></script>
<!-- tailwindcss js -->
<script src="/webjars/tailwindcss/3.3.5/tailwindcss.js" th:src="@{/webjars/tailwindcss/3.3.5/tailwindcss.js}"></script>
<script src="/configure.js" th:src="@{/configure.js}"></script> <script src="/configure.js" th:src="@{/configure.js}"></script>
<!-- <script src="/webjars/tailwindcss/3.4.5/tailwind.css.js" th:src="@{/webjars/tailwindcss/3.4.5/tailwind.css.js}"></script> -->
<script>
(function () {
'use strict';
window.addEventListener('load', function () {
var box, div, link, namespaceURI;
// First check whether the page contains any <math> element.
namespaceURI = 'http://www.w3.org/1998/Math/MathML';
if (document.body.getElementsByTagNameNS(namespaceURI, 'math')[0]) {
// Create a div to test mspace, using Kuma's "offscreen" CSS
document.body.insertAdjacentHTML(
'afterbegin',
"<div style='border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px;'><math xmlns='" +
namespaceURI +
"'><mspace height='23px' width='77px'></mspace></math></div>",
);
div = document.body.firstChild;
box = div.firstChild.firstChild.getBoundingClientRect();
document.body.removeChild(div);
if (Math.abs(box.height - 23) > 1 || Math.abs(box.width - 77) > 1) {
// Insert the mathml.css stylesheet.
link = document.createElement('link');
link.href = '[(@{/webjars/mathfonts/1.0.0/mathml.css})]'.startsWith('[')
? 'http://localhost:8080/webjars/mathfonts/1.0.0/mathml.css'
: '[(@{/webjars/mathfonts/1.0.0/mathml.css})]';
link.rel = 'stylesheet';
document.head.appendChild(link);
}
}
});
})();
</script>
</head> </head>
<body> <body>
<noscript> <noscript>
@ -26,9 +60,11 @@
</noscript> </noscript>
<!--加载 js 时,--> <!--加载 js 时,-->
<div id="appInitializer" style="height: 100vh; display: grid; place-items: center;"><!--全屏高度,grid布局,子元素垂直方向位于屏幕中间--> <div id="appInitializer" style="height: 100vh; display: grid; place-items: center">
<div style="display: grid; justify-items: center;"><!--grid布局, 子元素水平方向位于屏幕中间--> <!--全屏高度,grid布局,子元素垂直方向位于屏幕中间-->
<svg style="color: #14234a;" width="48px" height="48px" stroke="currentColor" fill="currentColor" viewBox="0 0 64 64"> <div style="display: grid; justify-items: center">
<!--grid布局, 子元素水平方向位于屏幕中间-->
<svg style="color: #14234a" width="48px" height="48px" stroke="currentColor" fill="currentColor" viewBox="0 0 64 64">
<g stroke-width="4" stroke-linecap="round"> <g stroke-width="4" stroke-linecap="round">
<line y1="17" y2="29" transform="translate(32,32) rotate(180)"> <line y1="17" y2="29" transform="translate(32,32) rotate(180)">
<animate attributeName="stroke-opacity" dur="750ms" values="1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1" repeatCount="indefinite"></animate> <animate attributeName="stroke-opacity" dur="750ms" values="1;.85;.7;.65;.55;.45;.35;.25;.15;.1;0;1" repeatCount="indefinite"></animate>
@ -68,7 +104,7 @@
</line> </line>
</g> </g>
</svg> </svg>
<div style="padding: 10px;" th:text="#{pageLoading}">正在加载, 请稍后......</div> <div style="padding: 10px" th:text="#{pageLoading}">正在加载, 请稍后......</div>
<div id="appInitializerStatus"></div> <div id="appInitializerStatus"></div>
</div> </div>
</div> </div>

BIN
irbs.frontend/public/login-bg.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 923 KiB

After

Width:  |  Height:  |  Size: 234 KiB

BIN
irbs.frontend/public/webjars/mathfonts/1.0.0/Asana/Asana-Math.woff2

Binary file not shown.

40
irbs.frontend/public/webjars/mathfonts/1.0.0/Asana/mathfonts.css

@ -1,40 +0,0 @@
/*
Asana Math is released under the SIL Open Font License. See the files in this
directory for details. The font can be obtained from several TeX distributions
or package managers. The font does not seem to have a corresponding "non-MATH"
font, it is recommended to use a Palatino-like font for the surrounding text.
The WOFF fonts have been obtained from
http://mirrors.ctan.org/fonts/
*/
@namespace url('http://www.w3.org/1999/xhtml');
@namespace m url('http://www.w3.org/1998/Math/MathML');
@font-face {
font-family: Asana Math;
src: local('Asana Math'), local('Asana-Math'),
url('Asana-Math.woff2'), url('Asana-Math.woff');
}
.htmlmathparagraph, m|mtext {
font-family: Asana Math;
}
m|math {
font-family: Asana Math;
}
.oldstylenumbers {
font-variant-numeric: oldstyle-nums; /* Recommended syntax */
font-feature-settings: 'onum'; /* OpenType feature syntax */
-moz-font-feature-settings: 'onum'; /* Gecko <= 33 syntax */
-webkit-font-feature-settings: 'onum'; /* Blink syntax */
}
@font-feature-values Asana Math { @stylistic { calligraphic: 1; } }
m|*.calligraphic {
font-variant-alternates: stylistic(calligraphic); /* Recommended syntax */
font-feature-settings: 'salt'; /* OpenType feature syntax */
-moz-font-feature-settings: 'salt'; /* Gecko <= 33 syntax */
-webkit-font-feature-settings: 'salt'; /* Blink syntax */
}

63
irbs.frontend/public/webjars/tailwindcss/3.3.5/tailwindcss.js

File diff suppressed because one or more lines are too long

62
irbs.frontend/public/webjars/tailwindcss/3.4.5/tailwind.css.js

File diff suppressed because one or more lines are too long

6
irbs.frontend/src/boostrap.ts

@ -9,8 +9,12 @@ import localRoutes from './routes/routes.json';
import localComponents from './components'; import localComponents from './components';
import App from './App.vue'; import App from './App.vue';
// 以下导入 css 的语句在具体的前端项目中生效
// platform-core 提供的模版通过执行 pnpm sync 命令时,会替换掉 , 以便生效
// 导入 platform-core css
import 'platform-core/dist/css/platform-core.css'; import 'platform-core/dist/css/platform-core.css';
import './css/tailwind.css'; // 导入 tailwind utilities css
import 'tailwindcss/utilities.css';
// 设置远程组件加载器 // 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数 // 覆盖 platform-core 包中的 remoteComponentLoader 函数

20
irbs.frontend/src/components/index.ts

@ -20,8 +20,7 @@ import irbs_custRatingHist from '@/views/query/CustRatingHist.vue';
import irbs_defaultHist from '@/views/query/DefaultHist.vue'; import irbs_defaultHist from '@/views/query/DefaultHist.vue';
import irbs_riskExposureHist from '@/views/query/RiskExposureHist.vue'; import irbs_riskExposureHist from '@/views/query/RiskExposureHist.vue';
import irbs_custInfo from '@/views/query/CustInfo.vue'; import irbs_custInfo from '@/views/query/CustInfo.vue';
import irbs_instCustFeature from '@/views/query/InstitutionCustFeatureRet.vue'; import irbs_pingAnLgdHist from '@/views/query/PingAnLgdHist.vue';
import irbs_corpCustFeature from '@/views/query/CorpCustFeatureRet.vue';
import irbs_resultQuery from '@/views/model/ResultQuery.vue'; import irbs_resultQuery from '@/views/model/ResultQuery.vue';
import irbs_pressureTest from '@/views/model/PressureTest.vue'; import irbs_pressureTest from '@/views/model/PressureTest.vue';
import irbs_ratingAdjustment from '@/views/config/RatingAdjustment.vue'; import irbs_ratingAdjustment from '@/views/config/RatingAdjustment.vue';
@ -38,6 +37,13 @@ import irbs_report_rptModelMonitorStable from '@/views/report/RptModelMonitorSta
import irbs_report_rptRatingOverturn from '@/views/report/RptRatingOverturn.vue'; import irbs_report_rptRatingOverturn from '@/views/report/RptRatingOverturn.vue';
import irbs_report_rptRatingAdjust from '@/views/report/RptRatingAdjust.vue'; import irbs_report_rptRatingAdjust from '@/views/report/RptRatingAdjust.vue';
import irbs_report_rptModelMonitorBinomialCheck from '@/views/report/RptModelMonitorBinomialCheck.vue'; import irbs_report_rptModelMonitorBinomialCheck from '@/views/report/RptModelMonitorBinomialCheck.vue';
import irbs_config_headApprConf from '@/views/config/HeadApprConf.vue';
import irbs_config_financialMapping from '@/views/config/FinancialMapping.vue';
import irbs_mainScale from '@/views/config/MainScaleVersion.vue';
import irbs_defaultRebirthHist from '@/views/query/RebirthDefaultHist.vue';
import irbs_rptRatingChange from '@/views/report/RptRatingChange.vue';
import irbs_tzblwdxfxbb from '@/views/report/tzblwdxfxbb.vue';
import irbs_tzblwoeivbb from '@/views/report/tzblwoeivbb.vue';
const localComponents = { const localComponents = {
'irbs.irbsHome': irbs_irbsHome, 'irbs.irbsHome': irbs_irbsHome,
@ -58,8 +64,7 @@ const localComponents = {
'irbs.defaultHist': irbs_defaultHist, 'irbs.defaultHist': irbs_defaultHist,
'irbs.riskExposureHist': irbs_riskExposureHist, 'irbs.riskExposureHist': irbs_riskExposureHist,
'irbs.custInfo': irbs_custInfo, 'irbs.custInfo': irbs_custInfo,
'irbs.instCustFeature': irbs_instCustFeature, 'irbs.pingAnLgdHist': irbs_pingAnLgdHist,
'irbs.corpCustFeature': irbs_corpCustFeature,
'irbs.resultQuery': irbs_resultQuery, 'irbs.resultQuery': irbs_resultQuery,
'irbs.pressureTest': irbs_pressureTest, 'irbs.pressureTest': irbs_pressureTest,
'irbs.ratingAdjustment': irbs_ratingAdjustment, 'irbs.ratingAdjustment': irbs_ratingAdjustment,
@ -76,6 +81,13 @@ const localComponents = {
'irbs.report.rptRatingOverturn': irbs_report_rptRatingOverturn, 'irbs.report.rptRatingOverturn': irbs_report_rptRatingOverturn,
'irbs.report.rptRatingAdjust': irbs_report_rptRatingAdjust, 'irbs.report.rptRatingAdjust': irbs_report_rptRatingAdjust,
'irbs.report.rptModelMonitorBinomialCheck': irbs_report_rptModelMonitorBinomialCheck, 'irbs.report.rptModelMonitorBinomialCheck': irbs_report_rptModelMonitorBinomialCheck,
'irbs.config.headApprConf': irbs_config_headApprConf,
'irbs.config.financialMapping': irbs_config_financialMapping,
'irbs.mainScale': irbs_mainScale,
'irbs.defaultRebirthHist': irbs_defaultRebirthHist,
'irbs.rptRatingChange': irbs_rptRatingChange,
'irbs.tzblwdxfxbb': irbs_tzblwdxfxbb,
'irbs.tzblwoeivbb': irbs_tzblwoeivbb,
}; };
export default localComponents; export default localComponents;

1
irbs.shrcb.poc.frontend/.editorconfig

@ -10,5 +10,6 @@ root = true
charset = utf-8 # 字符集: utf-8 charset = utf-8 # 字符集: utf-8
indent_size = 2 # 缩进大小: 2 indent_size = 2 # 缩进大小: 2
indent_style = space # 缩进风格: 空格 indent_style = space # 缩进风格: 空格
end_of_line = lf # 行结束符: 换行符
insert_final_newline = true # 是否在文件的最后插入一个空行 insert_final_newline = true # 是否在文件的最后插入一个空行
trim_trailing_whitespace = true # 是否删除行尾的空格 trim_trailing_whitespace = true # 是否删除行尾的空格

94
irbs.shrcb.poc.frontend/.eslintrc.cjs

@ -1,35 +1,71 @@
module.exports = { module.exports = {
root: true, // https://eslint.org/docs/user-guide/configuring#configuration-cascading-and-hierarchy
// This option interrupts the configuration hierarchy at this file
// Remove this if you have an higher level ESLint config file (it usually happens into a monorepos)
root: true,
env: { env: {
browser: true, browser: true,
es2022: true, es2022: true,
"vue/setup-compiler-macros": true, node: true,
}, 'vue/setup-compiler-macros': true,
},
extends:[ // Rules order is important, please avoid shuffling them
"eslint:recommended", extends: [
"plugin:vue/vue3-recommended", // Base ESLint recommended rules
"plugin:@typescript-eslint/recommended", 'eslint:recommended',
"plugin:prettier/recommended",
], // https://github.com/typescript-eslint/typescript-eslint/tree/master/packages/eslint-plugin#usage
// ESLint typescript rules
parser: "vue-eslint-parser", 'plugin:@typescript-eslint/recommended',
parserOptions: {
ecmaVersion: 2022, // Vue ESLint recommended rules
parser: "@typescript-eslint/parser", // 'plugin:vue/vue3-essential', // Priority A: Essential (Error Prevention)
sourceType: "module", // 'plugin:vue/vue3-strongly-recommended', // Priority B: Strongly Recommended (Improving Readability)
ecmaFeatures: { // 'plugin:vue/vue3-recommended', // Priority C: Recommended (Minimizing Arbitrary Choices and Cognitive Overhead)
jsx : false 'plugin:vue/vue3-recommended',
}
}, // https://github.com/prettier/eslint-config-prettier#installation
// usage with Prettier, provided by 'eslint-config-prettier'.
'plugin:prettier/recommended', // Recommended
],
rules:{ parser: 'vue-eslint-parser',
'semi':[1], parserOptions: {
'@typescript-eslint/no-var-requires': 'off', ecmaVersion: 2022,
'@typescript-eslint/no-explicit-any': 'off', parser: '@typescript-eslint/parser',
"@typescript-eslint/no-unused-vars": 'off', ecmaFeatures: {
'vue/multi-word-component-names': 'off', /* 禁用 vue 组件名称检查规则 */ jsx: false,
'no-prototype-builtins': 'off',
}, },
},
plugins: [
// required to apply rules which need type information
'@typescript-eslint',
// https://eslint.vuejs.org/user-guide/#why-doesn-t-it-work-on-vue-files
// required to lint *.vue files
'vue',
// https://github.com/typescript-eslint/typescript-eslint/issues/389#issuecomment-509292674
// Prettier has not been included as plugin to avoid performance impact
// add it as an extension for your IDE
],
rules: {
semi: [1],
'@typescript-eslint/no-var-requires': 'off',
'@typescript-eslint/no-empty-object-type': 'off',
'@typescript-eslint/no-explicit-any': 'off',
'@typescript-eslint/no-unused-expressions': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'@typescript-eslint/no-this-alias': 'off',
'vue/multi-word-component-names': 'off' /* 禁用 vue 组件名称检查规则 */,
'no-prototype-builtins': 'off',
'prefer-rest-params': 'off',
'no-control-regex': 'off',
'no-case-declarations': 'off',
'vue/no-v-html': 'off'
},
}; };

1
irbs.shrcb.poc.frontend/.gitignore

@ -26,6 +26,7 @@ coverage
*.njsproj *.njsproj
*.sln *.sln
*.sw? *.sw?
.vuepress
test-results/ test-results/
playwright-report/ playwright-report/

10
irbs.shrcb.poc.frontend/package.json

@ -73,7 +73,7 @@
"webpack-merge": "6.0.1" "webpack-merge": "6.0.1"
}, },
"dependencies": { "dependencies": {
"@codemirror/autocomplete": "6.18.3", "@codemirror/autocomplete": "6.18.4",
"@codemirror/commands": "6.7.1", "@codemirror/commands": "6.7.1",
"@codemirror/lang-html": "6.4.9", "@codemirror/lang-html": "6.4.9",
"@codemirror/lang-java": "6.0.1", "@codemirror/lang-java": "6.0.1",
@ -81,10 +81,10 @@
"@codemirror/lang-json": "6.0.1", "@codemirror/lang-json": "6.0.1",
"@codemirror/lang-sql": "6.8.0", "@codemirror/lang-sql": "6.8.0",
"@codemirror/lang-xml": "6.1.0", "@codemirror/lang-xml": "6.1.0",
"@codemirror/language": "6.10.4", "@codemirror/language": "6.10.8",
"@codemirror/search": "6.5.8", "@codemirror/search": "6.5.8",
"@codemirror/state": "6.4.1", "@codemirror/state": "6.5.0",
"@codemirror/view": "6.35.0", "@codemirror/view": "6.36.1",
"@maxgraph/core": "0.13.1", "@maxgraph/core": "0.13.1",
"@quasar/extras": "1.16.13", "@quasar/extras": "1.16.13",
"@univerjs/core": "0.5.0", "@univerjs/core": "0.5.0",
@ -111,7 +111,7 @@
"mockjs": "1.1.0", "mockjs": "1.1.0",
"node-sql-parser": "5.3.4", "node-sql-parser": "5.3.4",
"pinia": "2.2.6", "pinia": "2.2.6",
"platform-core": "8.2.22", "platform-core": "8.2.33",
"quasar": "2.17.4", "quasar": "2.17.4",
"sort-array": "5.0.0", "sort-array": "5.0.0",
"svg-path-commander": "2.1.5", "svg-path-commander": "2.1.5",

67
irbs.shrcb.poc.frontend/public/configure.js

@ -1,30 +1,43 @@
// 在浏览器 window 对象中新建名为 APP 的容器变量, 用于存放平台的全局变量 // 在浏览器 window 对象中新建名为 APP 的容器变量, 用于存放平台的全局变量
window.APP = {}; window.APP = {};
// 全局配置 // 全局配置
window.APP.configure ={ window.APP.configure = {
// 应用上下文路径 // 项目名称
webContextPath: '[(@{/})]'.startsWith('[')? '/' : '[(@{/})]', projectName: '',
// 默认后端 API 请求的服务地址前缀
apiContextPaths: { // 应用上下文路径
DEFAULT: '[(@{/})]'.startsWith('[')? 'http://localhost:8080/' : '[(@{/})]', webContextPath: '[(@{/})]'.startsWith('[') ? '/' : '[(@{/})]',
},
// 是否启用本地 mock // 默认后端 API 请求的服务地址前缀
enableLocalMock : false, apiContextPaths: {
// mock 请求响应时间(单位:毫秒) DEFAULT: '[(@{/})]'.startsWith('[') ? 'http://localhost:8080/' : '[(@{/})]',
localMockTimeout : 10, },
// 是否启用使用远程服务端配置
enableRemoteConfigure : true, // 前端运行环境
// 是否首先使用本地路由 // alone: 前端独立部署, 即前端打包后独立部署于 web 服务上(如: nginx, caddy 等)
useLocaleRouterFirst : true, // develop: 前端运行在开发环境, 即前端在开发环境下运行(如: webpack)
// axios 配置 // backend: 前端运行在后端环境, 即前后端一起打包后部署在应用服务器上(如: tomcat, undertow, jeety等)
axios : { fontendScenario: 'develop',
baseURL: '',
timeout: 1000 * 60, // router 历史模式
crossdomain: true, routerHistoryMode: 'hash',
basicAuth: {
enable: true, // 是否启用本地 mock
username: 'admin', enableLocalMock: false,
password: 'admin',
} // mock 请求响应时间(单位:毫秒)
} localMockTimeout: 10,
}
// 是否启用使用远程服务端配置
enableRemoteConfigure: true,
// 是否首先使用本地路由
useLocaleRouterFirst: true,
// axios 配置
axios: {
baseURL: '',
timeout: 1000 * 60,
crossdomain: true,
},
};

39
irbs.shrcb.poc.frontend/public/index.html

@ -15,17 +15,44 @@
th:href="@{/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.css}" th:href="@{/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.css}"
/> />
<!-- math font css -->
<link rel="stylesheet" href="/webjars/mathfonts/1.0.0/Asana/mathfonts.css" th:href="@{/webjars/mathfonts/1.0.0/Asana/mathfonts.css}" />
<!-- luckysheet js --> <!-- luckysheet js -->
<script src="/webjars/luckysheet/2.1.13/plugins/js/plugin.js" th:src="@{/webjars/luckysheet/2.1.13/plugins/js/plugin.js}"></script> <script src="/webjars/luckysheet/2.1.13/plugins/js/plugin.js" th:src="@{/webjars/luckysheet/2.1.13/plugins/js/plugin.js}"></script>
<script src="/webjars/luckysheet/2.1.13/luckysheet.umd.js" th:src="@{/webjars/luckysheet/2.1.13/luckysheet.umd.js}"></script> <script src="/webjars/luckysheet/2.1.13/luckysheet.umd.js" th:src="@{/webjars/luckysheet/2.1.13/luckysheet.umd.js}"></script>
<!-- tailwindcss js -->
<script src="/webjars/tailwindcss/3.3.5/tailwindcss.js" th:src="@{/webjars/tailwindcss/3.3.5/tailwindcss.js}"></script>
<script src="/configure.js" th:src="@{/configure.js}"></script> <script src="/configure.js" th:src="@{/configure.js}"></script>
<!-- <script src="/webjars/tailwindcss/3.4.5/tailwind.css.js" th:src="@{/webjars/tailwindcss/3.4.5/tailwind.css.js}"></script> -->
<script>
(function () {
'use strict';
window.addEventListener('load', function () {
var box, div, link, namespaceURI;
// First check whether the page contains any <math> element.
namespaceURI = 'http://www.w3.org/1998/Math/MathML';
if (document.body.getElementsByTagNameNS(namespaceURI, 'math')[0]) {
// Create a div to test mspace, using Kuma's "offscreen" CSS
document.body.insertAdjacentHTML(
'afterbegin',
"<div style='border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px;'><math xmlns='" +
namespaceURI +
"'><mspace height='23px' width='77px'></mspace></math></div>",
);
div = document.body.firstChild;
box = div.firstChild.firstChild.getBoundingClientRect();
document.body.removeChild(div);
if (Math.abs(box.height - 23) > 1 || Math.abs(box.width - 77) > 1) {
// Insert the mathml.css stylesheet.
link = document.createElement('link');
link.href = '[(@{/webjars/mathfonts/1.0.0/mathml.css})]'.startsWith('[')
? 'http://localhost:8080/webjars/mathfonts/1.0.0/mathml.css'
: '[(@{/webjars/mathfonts/1.0.0/mathml.css})]';
link.rel = 'stylesheet';
document.head.appendChild(link);
}
}
});
})();
</script>
</head> </head>
<body> <body>
<noscript> <noscript>

BIN
irbs.shrcb.poc.frontend/public/login-bg.jpg

Binary file not shown.

Before

Width:  |  Height:  |  Size: 923 KiB

After

Width:  |  Height:  |  Size: 234 KiB

BIN
irbs.shrcb.poc.frontend/public/webjars/mathfonts/1.0.0/Asana/Asana-Math.woff2

Binary file not shown.

40
irbs.shrcb.poc.frontend/public/webjars/mathfonts/1.0.0/Asana/mathfonts.css

@ -1,40 +0,0 @@
/*
Asana Math is released under the SIL Open Font License. See the files in this
directory for details. The font can be obtained from several TeX distributions
or package managers. The font does not seem to have a corresponding "non-MATH"
font, it is recommended to use a Palatino-like font for the surrounding text.
The WOFF fonts have been obtained from
http://mirrors.ctan.org/fonts/
*/
@namespace url('http://www.w3.org/1999/xhtml');
@namespace m url('http://www.w3.org/1998/Math/MathML');
@font-face {
font-family: Asana Math;
src: local('Asana Math'), local('Asana-Math'),
url('Asana-Math.woff2'), url('Asana-Math.woff');
}
.htmlmathparagraph, m|mtext {
font-family: Asana Math;
}
m|math {
font-family: Asana Math;
}
.oldstylenumbers {
font-variant-numeric: oldstyle-nums; /* Recommended syntax */
font-feature-settings: 'onum'; /* OpenType feature syntax */
-moz-font-feature-settings: 'onum'; /* Gecko <= 33 syntax */
-webkit-font-feature-settings: 'onum'; /* Blink syntax */
}
@font-feature-values Asana Math { @stylistic { calligraphic: 1; } }
m|*.calligraphic {
font-variant-alternates: stylistic(calligraphic); /* Recommended syntax */
font-feature-settings: 'salt'; /* OpenType feature syntax */
-moz-font-feature-settings: 'salt'; /* Gecko <= 33 syntax */
-webkit-font-feature-settings: 'salt'; /* Blink syntax */
}

63
irbs.shrcb.poc.frontend/public/webjars/tailwindcss/3.3.5/tailwindcss.js

File diff suppressed because one or more lines are too long

62
irbs.shrcb.poc.frontend/public/webjars/tailwindcss/3.4.5/tailwind.css.js

File diff suppressed because one or more lines are too long

6
irbs.shrcb.poc.frontend/src/boostrap.ts

@ -9,8 +9,12 @@ import localRoutes from './routes/routes.json';
import localComponents from './components'; import localComponents from './components';
import App from './App.vue'; import App from './App.vue';
// 以下导入 css 的语句在具体的前端项目中生效
// platform-core 提供的模版通过执行 pnpm sync 命令时,会替换掉 , 以便生效
// 导入 platform-core css
import 'platform-core/dist/css/platform-core.css'; import 'platform-core/dist/css/platform-core.css';
import './css/tailwind.css'; // 导入 tailwind utilities css
import 'tailwindcss/utilities.css';
// 设置远程组件加载器 // 设置远程组件加载器
// 覆盖 platform-core 包中的 remoteComponentLoader 函数 // 覆盖 platform-core 包中的 remoteComponentLoader 函数

24
settings.gradle

@ -1,12 +1,12 @@
include 'app.irbs' include ':app.irbs'
include 'irbs.cust.rating' include ':irbs.cust.rating'
include 'irbs.defaultManager' include ':irbs.defaultManager'
include 'irbs.deptRating' include ':irbs.deptRating'
include 'irbs.feature' include ':irbs.feature'
include 'irbs.financialTemplate' include ':irbs.financialTemplate'
include 'irbs.frontend' include ':irbs.frontend'
include 'irbs.help.doc' include ':irbs.help.doc'
include 'irbs.reports' include ':irbs.reports'
include 'irbs.riskExposure' include ':irbs.riskExposure'
include 'irbs.shrcb.poc' include ':irbs.shrcb.poc'
include 'irbs.shrcb.poc.frontend' include ':irbs.shrcb.poc.frontend'
Loading…
Cancel
Save