-
-
-
{{ title }}
-
-
-
- {}">
-
-
-
-
- 全屏
- 退出全屏
-
-
- 关闭
-
-
-
-
-
+
+
+
+
{{ title }}
+
+
+
+ {}">
+
+
+
+
+ {{ $t('fullScreen') }}
+ {{ $t('fullScreenExit') }}
+
+
+ {{ $t('close') }}
+
+
-
+
\ No newline at end of file
diff --git a/io.sc.platform.core.frontend/src/platform/components/workflow/BpmTask.vue b/io.sc.platform.core.frontend/src/platform/components/workflow/BpmTask.vue
new file mode 100644
index 00000000..2aa0bb8a
--- /dev/null
+++ b/io.sc.platform.core.frontend/src/platform/components/workflow/BpmTask.vue
@@ -0,0 +1,193 @@
+
+
+
+
+
+
diff --git a/io.sc.platform.core.frontend/src/platform/components/workflow/CompleteTaskDialog.vue b/io.sc.platform.core.frontend/src/platform/components/workflow/CompleteTaskDialog.vue
new file mode 100644
index 00000000..7eaf601c
--- /dev/null
+++ b/io.sc.platform.core.frontend/src/platform/components/workflow/CompleteTaskDialog.vue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/io.sc.platform.core.frontend/src/platform/components/workflow/SelectAssigneeDialog.vue b/io.sc.platform.core.frontend/src/platform/components/workflow/SelectAssigneeDialog.vue
new file mode 100644
index 00000000..b0e71f35
--- /dev/null
+++ b/io.sc.platform.core.frontend/src/platform/components/workflow/SelectAssigneeDialog.vue
@@ -0,0 +1,69 @@
+
+
+
+ {{ t('org.wsp.framework.flowable.task.tip.selectAssignee') }}
+
+
+
+
+
+
+
+
+
diff --git a/io.sc.platform.core.frontend/src/platform/components/workflow/WWorkflowAction.vue b/io.sc.platform.core.frontend/src/platform/components/workflow/WWorkflowAction.vue
new file mode 100644
index 00000000..8fd75e9f
--- /dev/null
+++ b/io.sc.platform.core.frontend/src/platform/components/workflow/WWorkflowAction.vue
@@ -0,0 +1,96 @@
+
+
+
+
+
+
diff --git a/io.sc.platform.core.frontend/src/platform/components/workflow/WorkflowAction.vue b/io.sc.platform.core.frontend/src/platform/components/workflow/WorkflowAction.vue
new file mode 100644
index 00000000..219847ba
--- /dev/null
+++ b/io.sc.platform.core.frontend/src/platform/components/workflow/WorkflowAction.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
diff --git a/io.sc.platform.core.frontend/src/platform/i18n/messages.json b/io.sc.platform.core.frontend/src/platform/i18n/messages.json
index 0c526b4f..7756ef78 100644
--- a/io.sc.platform.core.frontend/src/platform/i18n/messages.json
+++ b/io.sc.platform.core.frontend/src/platform/i18n/messages.json
@@ -32,6 +32,7 @@
"myTasks": "My Tasks",
"org.springframework.security.authentication.InsufficientAuthenticationException": "Please login and try again!",
"reset": "Reset",
+ "rownum": "Row Number",
"search": "Search",
"security.login.message.error": "authentication failed! please check your user name and password.",
"security.login.password.placeholder": "Please input password",
@@ -117,5 +118,33 @@
"cron.year.notSpecify": "Not Specify",
"cron.year.period.1": "From",
"cron.year.period.2": " Year, To ",
- "cron.year.period.3": " Year"
+ "cron.year.period.3": " Year",
+
+ "action.query": "Query",
+ "action.moreQueryConditions": "More Query Conditions",
+ "action.reset": "Reset",
+ "action.refresh": "Refresh",
+ "action.addNew": "Add New",
+ "action.addTop": "Add Top Node",
+ "action.addChild": "Add Child Node",
+ "action.edit": "Edit",
+ "action.edit.tip": "Please select a record for edit",
+ "action.copy": "Copy",
+ "action.copy.tip": "Please select a record for copy",
+ "action.remove": "Remove",
+ "action.remove.tip": "Are you sure to remove the record?",
+ "action.resetDefaultValues": "Restore Default Values",
+ "action.resetDefaultValues.tip": "Are you sure to restore the default values?",
+ "action.view": "View",
+ "action.view.tip": "Please select a record for view",
+ "action.export": "Export",
+ "action.export.failed": "Export Failed",
+ "action.submit": "Submit",
+
+ "tip.noData": "No Data",
+ "tip.dataLoading": "Data Loading",
+ "tip.operationSuccess": "Operation Success",
+ "tip.operationFailed": "Operation Failed",
+ "tip.pagenation.totalRecord": "{count} records was found."
+
}
diff --git a/io.sc.platform.core.frontend/src/platform/i18n/messages_tw_CN.json b/io.sc.platform.core.frontend/src/platform/i18n/messages_tw_CN.json
index 184fa90e..23e84d37 100644
--- a/io.sc.platform.core.frontend/src/platform/i18n/messages_tw_CN.json
+++ b/io.sc.platform.core.frontend/src/platform/i18n/messages_tw_CN.json
@@ -32,6 +32,7 @@
"myTasks": "我的任務",
"org.springframework.security.authentication.InsufficientAuthenticationException": "當前用戶還未登錄, 請登錄後重试!",
"reset": "重置",
+ "rownum": "序號",
"search": "搜索",
"security.login.message.error": "認證失敗!請檢查您輸入的登陸名和密碼是否正確",
"security.login.password.placeholder": "請輸入密碼",
@@ -117,5 +118,32 @@
"cron.year.notSpecify": "不指定",
"cron.year.period.1": "从",
"cron.year.period.2": "年, 到",
- "cron.year.period.3": "年"
+ "cron.year.period.3": "年",
+
+ "action.query": "查詢",
+ "action.moreQueryConditions": "更多查詢條件",
+ "action.reset": "重置",
+ "action.refresh": "刷新",
+ "action.addNew": "新增",
+ "action.addTop": "新增頂級節點",
+ "action.addChild": "新增子節點",
+ "action.edit": "編輯",
+ "action.edit.tip": "請選擇一條記錄進行編輯",
+ "action.copy": "複製",
+ "action.copy.tip": "請選擇一條記錄進行複製",
+ "action.remove": "刪除",
+ "action.remove.tip": "您確定要刪除該記錄嗎?",
+ "action.resetDefaultValues": "恢復默認值",
+ "action.resetDefaultValues.tip": "您確定要恢復默認值嗎?",
+ "action.view": "查看",
+ "action.view.tip": "請選擇一條記錄進行查看",
+ "action.export": "導出",
+ "action.export.failed": "導出失敗",
+ "action.submit": "提交",
+
+ "tip.noData": "未查找到任何數據",
+ "tip.dataLoading": "數據加載中",
+ "tip.operationSuccess": "操作成功",
+ "tip.operationFailed": "操作失敗",
+ "tip.pagenation.totalRecord": "共 {count} 條記錄."
}
diff --git a/io.sc.platform.core.frontend/src/platform/i18n/messages_zh_CN.json b/io.sc.platform.core.frontend/src/platform/i18n/messages_zh_CN.json
index 74b8ec88..e3ca98b7 100644
--- a/io.sc.platform.core.frontend/src/platform/i18n/messages_zh_CN.json
+++ b/io.sc.platform.core.frontend/src/platform/i18n/messages_zh_CN.json
@@ -32,6 +32,7 @@
"myTasks": "我的任务",
"org.springframework.security.authentication.InsufficientAuthenticationException": "当前用户还未登录, 请登录后重试!",
"reset": "重置",
+ "rownum": "序号",
"search": "搜索",
"security.login.message.error": "认证失败! 请检查您输入的登录名和密码是否正确。",
"security.login.password.placeholder": "请输入密码",
@@ -117,5 +118,32 @@
"cron.year.notSpecify": "不指定",
"cron.year.period.1": "从",
"cron.year.period.2": "年, 到",
- "cron.year.period.3": "年"
+ "cron.year.period.3": "年",
+
+ "action.query": "查询",
+ "action.moreQueryConditions": "更多查询条件",
+ "action.reset": "重置",
+ "action.refresh": "刷新",
+ "action.addNew": "新增",
+ "action.addTop": "新增顶级节点",
+ "action.addChild": "新增子节点",
+ "action.edit": "编辑",
+ "action.edit.tip": "请选择一条记录进行编辑",
+ "action.copy": "复制",
+ "action.copy.tip": "请选择一条记录进行复制",
+ "action.remove": "删除",
+ "action.remove.tip": "您确定要删除该记录吗?",
+ "action.resetDefaultValues": "恢复默认值",
+ "action.resetDefaultValues.tip": "您确定要恢复默认值吗?",
+ "action.view": "查看",
+ "action.view.tip": "请选择一条记录进行查看",
+ "action.export": "导出",
+ "action.export.failed": "导出失败",
+ "action.submit": "提交",
+
+ "tip.noData": "未查找到任何数据",
+ "tip.dataLoading": "数据加载中",
+ "tip.operationSuccess": "操作成功",
+ "tip.operationFailed": "操作失败",
+ "tip.pagenation.totalRecord": "共 {count} 条记录."
}
diff --git a/io.sc.platform.core.frontend/src/platform/index.ts b/io.sc.platform.core.frontend/src/platform/index.ts
index 0abc8141..1ff9c66d 100644
--- a/io.sc.platform.core.frontend/src/platform/index.ts
+++ b/io.sc.platform.core.frontend/src/platform/index.ts
@@ -139,6 +139,7 @@ export {
WSuccessFailedTag,
WToolbar,
WTreeGrid,
+ WWorkflowAction,
} from './components';
export { PlatformIconEnum } from './components';
diff --git a/io.sc.platform.core.frontend/src/platform/layout/sub-layout/Main.vue b/io.sc.platform.core.frontend/src/platform/layout/sub-layout/Main.vue
index a594960c..c3b029f2 100644
--- a/io.sc.platform.core.frontend/src/platform/layout/sub-layout/Main.vue
+++ b/io.sc.platform.core.frontend/src/platform/layout/sub-layout/Main.vue
@@ -23,7 +23,7 @@
-
+
@@ -151,5 +151,4 @@
import SiderCollapser from './SiderCollapser.vue';
import MoreTagViewAction from './MoreTagViewAction.vue';
import { TagViewManager } from '@/platform/plugin/manager';
-import WVExpandDiv from '@/platform/components/layout/WVExpandDiv.vue';
diff --git a/io.sc.platform.core.frontend/src/routes/routes.json b/io.sc.platform.core.frontend/src/routes/routes.json
index e15d3bc2..6d5af58e 100644
--- a/io.sc.platform.core.frontend/src/routes/routes.json
+++ b/io.sc.platform.core.frontend/src/routes/routes.json
@@ -11,6 +11,7 @@
"permissions": ["/testcase/formElements/**/*"]
}
},
+
{
"name": "route.testcase.likm.dialog",
"path": "testcase/likm/dialog",
diff --git a/io.sc.platform.core.frontend/src/utils/PassOrNotFormater.ts b/io.sc.platform.core.frontend/src/utils/PassOrNotFormater.ts
new file mode 100644
index 00000000..00cfcb07
--- /dev/null
+++ b/io.sc.platform.core.frontend/src/utils/PassOrNotFormater.ts
@@ -0,0 +1,25 @@
+import { Tools } from '@/platform';
+
+const PassOrNotFormater = (value) => {
+ if (Tools.isUndefinedOrNull(value)) {
+ return '';
+ }
+ if (value === 'PASSED') {
+ return {
+ componentType: 'QIcon',
+ attrs: { name: 'bi-check-circle', size: '20px', color: 'green' },
+ };
+ } else if (value === 'UN_PASSED') {
+ return {
+ componentType: 'QIcon',
+ attrs: { name: 'bi-x-circle', size: '20px', color: 'red' },
+ };
+ } else if (value === 'ERROR') {
+ return {
+ componentType: 'QIcon',
+ attrs: { name: 'bi-x-circle', size: '20px', color: 'red' },
+ };
+ }
+};
+
+export default PassOrNotFormater;
diff --git a/io.sc.platform.core.frontend/src/views/FormElements.vue b/io.sc.platform.core.frontend/src/views/FormElements.vue
index a4261d9c..a1d0eb3c 100644
--- a/io.sc.platform.core.frontend/src/views/FormElements.vue
+++ b/io.sc.platform.core.frontend/src/views/FormElements.vue
@@ -1,258 +1,85 @@
-
-
-
-
-
- {{ col.label }}
-
-
-
-
-
-
- {{ col.label }}
-
-
-
-
-
-
-
-
- {{ props.row.name }}
-
-
-
- {{ props.row.calories }}
-
-
-
-
- {{ props.row.fat }}
-
-
-
-
- {{ props.row.carbs }}
-
-
-
-
- {{ props.row.protein }}
-
-
-
-
- {{ props.row.sodium }}
-
-
-
-
- {{ props.row.calcium }}
-
-
-
-
- {{ props.row.iron }}
-
-
-
-
-
-
+
+
+
-
diff --git a/io.sc.platform.core.frontend/template-project/package.json b/io.sc.platform.core.frontend/template-project/package.json
index a324701b..07c2993b 100644
--- a/io.sc.platform.core.frontend/template-project/package.json
+++ b/io.sc.platform.core.frontend/template-project/package.json
@@ -1,6 +1,6 @@
{
"name": "platform-core",
- "version": "8.1.152",
+ "version": "8.1.156",
"description": "前端核心包,用于快速构建前端的脚手架",
"private": false,
"keywords": [],
@@ -92,7 +92,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
- "platform-core": "8.1.152",
+ "platform-core": "8.1.156",
"quasar": "2.14.5",
"tailwindcss": "3.4.0",
"vue": "3.4.3",
diff --git a/io.sc.platform.core.frontend/template-project/src/routes/routes.json b/io.sc.platform.core.frontend/template-project/src/routes/routes.json
index e15d3bc2..6d5af58e 100644
--- a/io.sc.platform.core.frontend/template-project/src/routes/routes.json
+++ b/io.sc.platform.core.frontend/template-project/src/routes/routes.json
@@ -11,6 +11,7 @@
"permissions": ["/testcase/formElements/**/*"]
}
},
+
{
"name": "route.testcase.likm.dialog",
"path": "testcase/likm/dialog",
diff --git a/io.sc.platform.core.frontend/template-project/src/utils/PassOrNotFormater.ts b/io.sc.platform.core.frontend/template-project/src/utils/PassOrNotFormater.ts
new file mode 100644
index 00000000..00cfcb07
--- /dev/null
+++ b/io.sc.platform.core.frontend/template-project/src/utils/PassOrNotFormater.ts
@@ -0,0 +1,25 @@
+import { Tools } from '@/platform';
+
+const PassOrNotFormater = (value) => {
+ if (Tools.isUndefinedOrNull(value)) {
+ return '';
+ }
+ if (value === 'PASSED') {
+ return {
+ componentType: 'QIcon',
+ attrs: { name: 'bi-check-circle', size: '20px', color: 'green' },
+ };
+ } else if (value === 'UN_PASSED') {
+ return {
+ componentType: 'QIcon',
+ attrs: { name: 'bi-x-circle', size: '20px', color: 'red' },
+ };
+ } else if (value === 'ERROR') {
+ return {
+ componentType: 'QIcon',
+ attrs: { name: 'bi-x-circle', size: '20px', color: 'red' },
+ };
+ }
+};
+
+export default PassOrNotFormater;
diff --git a/io.sc.platform.core.frontend/template-project/src/views/FormElements.vue b/io.sc.platform.core.frontend/template-project/src/views/FormElements.vue
index a4261d9c..a1d0eb3c 100644
--- a/io.sc.platform.core.frontend/template-project/src/views/FormElements.vue
+++ b/io.sc.platform.core.frontend/template-project/src/views/FormElements.vue
@@ -1,258 +1,85 @@
-
-
-
-
-
- {{ col.label }}
-
-
-
-
-
-
- {{ col.label }}
-
-
-
-
-
-
-
-
- {{ props.row.name }}
-
-
-
- {{ props.row.calories }}
-
-
-
-
- {{ props.row.fat }}
-
-
-
-
- {{ props.row.carbs }}
-
-
-
-
- {{ props.row.protein }}
-
-
-
-
- {{ props.row.sodium }}
-
-
-
-
- {{ props.row.calcium }}
-
-
-
-
- {{ props.row.iron }}
-
-
-
-
-
-
+
+
+
-
diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties
index aef0a840..2ce4f97e 100644
--- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties
+++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties
@@ -102,6 +102,7 @@ normal=Normal
oldValue=Old Value
operation=Operation
operationSuccess=Operation Sucess
+operationFailed=Operation Failed
order=Order
org=Organization
parent=Parent
@@ -205,4 +206,5 @@ maxValue=Maximum Value
isMaxValueInclude=Is Maximum Value Include
RegExp=Regular Expression
execute=Execute
-executeAll=Execute All
\ No newline at end of file
+executeAll=Execute All
+moreQueryCondition=More Query Condition
\ No newline at end of file
diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties
index f2592b86..d3792eb5 100644
--- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties
+++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties
@@ -102,6 +102,7 @@ normal=\u6B63\u5E38
oldValue=\u539F\u503C
operation=\u64CD\u4F5C
operationSuccess=\u64CD\u4F5C\u6210\u529F
+operationFailed=\u64CD\u4F5C\u5931\u6557
order=\u9806\u5E8F
org=\u6A5F\u69CB
parent=\u7236
@@ -205,4 +206,5 @@ maxValue=\u6700\u5927\u503C
isMaxValueInclude=\u662F\u5426\u5305\u542B\u6700\u5927\u503C
RegExp=\u6B63\u5247\u8868\u9054\u5F0F
execute=\u57F7\u884C
-executeAll=\u57F7\u884C\u6240\u6709
\ No newline at end of file
+executeAll=\u57F7\u884C\u6240\u6709
+moreQueryCondition=\u66F4\u591A\u67E5\u8A62\u689D\u4EF6
\ No newline at end of file
diff --git a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties
index 99549f12..ab367321 100644
--- a/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties
+++ b/io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties
@@ -102,6 +102,7 @@ normal=\u6B63\u5E38
oldValue=\u539F\u503C
operation=\u64CD\u4F5C
operationSuccess=\u64CD\u4F5C\u6210\u529F
+operationFailed=\u64CD\u4F5C\u5931\u8D25
order=\u987A\u5E8F
org=\u673A\u6784
parent=\u7236
@@ -205,4 +206,5 @@ maxValue=\u6700\u5927\u503C
isMaxValueInclude=\u662F\u5426\u5305\u542B\u6700\u5927\u503C
RegExp=\u6B63\u5219\u8868\u8FBE\u5F0F
execute=\u6267\u884C
-executeAll=\u6267\u884C\u6240\u6709
\ No newline at end of file
+executeAll=\u6267\u884C\u6240\u6709
+moreQueryCondition=\u66F4\u591A\u67E5\u8BE2\u6761\u4EF6
\ No newline at end of file
diff --git a/io.sc.platform.developer.doc/asciidoc/9999-appendix/appendix.adoc b/io.sc.platform.developer.doc/asciidoc/9999-appendix/appendix.adoc
index 02665e8f..751fb388 100644
--- a/io.sc.platform.developer.doc/asciidoc/9999-appendix/appendix.adoc
+++ b/io.sc.platform.developer.doc/asciidoc/9999-appendix/appendix.adoc
@@ -14,5 +14,6 @@ include::oauth2/oauth2.adoc[]
include::java/java.adoc[]
include::rwa/rwa.adoc[]
include::icaap/icaap.adoc[]
+include::refrence/refrence.adoc[]
diff --git a/io.sc.platform.developer.doc/asciidoc/9999-appendix/refrence/html/html.adoc b/io.sc.platform.developer.doc/asciidoc/9999-appendix/refrence/html/html.adoc
index 0597dffb..906e3739 100644
--- a/io.sc.platform.developer.doc/asciidoc/9999-appendix/refrence/html/html.adoc
+++ b/io.sc.platform.developer.doc/asciidoc/9999-appendix/refrence/html/html.adoc
@@ -1 +1,11 @@
= The HTML DOM API
+= clientHeight、offsetHeight、scrollHeight
+image::9999-appendix/docker/tidb/001.png[,60%]
+
+|===
+| clientHeight | 元素高度 + 内边距
+| offsetHeight |
+| scrollHeight |
+|===
+
+
diff --git a/io.sc.platform.developer.frontend/package.json b/io.sc.platform.developer.frontend/package.json
index 3d9e7941..e727f25f 100644
--- a/io.sc.platform.developer.frontend/package.json
+++ b/io.sc.platform.developer.frontend/package.json
@@ -78,7 +78,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
- "platform-core": "8.1.152",
+ "platform-core": "8.1.155",
"quasar": "2.14.5",
"tailwindcss": "3.4.0",
"vue": "3.4.3",
diff --git a/io.sc.platform.developer.frontend/src/i18n/messages_tw_CN.json b/io.sc.platform.developer.frontend/src/i18n/messages_tw_CN.json
index b2e32990..d6e8ff5f 100644
--- a/io.sc.platform.developer.frontend/src/i18n/messages_tw_CN.json
+++ b/io.sc.platform.developer.frontend/src/i18n/messages_tw_CN.json
@@ -41,5 +41,4 @@
"developer.backend.export.liquibase.schema" : "方案",
"developer.backend.export.liquibase.tables" : "表",
"developer.backend.export.liquibase.export.tip" : "您確定要導出嗎?"
-
}
diff --git a/io.sc.platform.developer.frontend/src/i18n/messages_zh_CN.json b/io.sc.platform.developer.frontend/src/i18n/messages_zh_CN.json
index 9e8361d1..b5355eec 100644
--- a/io.sc.platform.developer.frontend/src/i18n/messages_zh_CN.json
+++ b/io.sc.platform.developer.frontend/src/i18n/messages_zh_CN.json
@@ -41,5 +41,4 @@
"developer.backend.export.liquibase.schema" : "方案",
"developer.backend.export.liquibase.tables" : "表",
"developer.backend.export.liquibase.export.tip" : "您确定要导出吗?"
-
}
diff --git a/io.sc.platform.developer.frontend/src/menus/menus.json b/io.sc.platform.developer.frontend/src/menus/menus.json
index 5285687f..5a5a3d98 100644
--- a/io.sc.platform.developer.frontend/src/menus/menus.json
+++ b/io.sc.platform.developer.frontend/src/menus/menus.json
@@ -74,7 +74,7 @@
/*开发者工具/后端工具*/
{"type":"GROUP", "order":500, "parentId":"menu.developer", "id":"menu.developer.backend", "titleI18nKey":"menu.developer.backend", "icon":"bi-server"},
/*开发者工具/后端工具/数据导入*/
- {"type":"ROUTE", "order":100, "parentId":"menu.developer.backend", "id":"menu.developer.backend.import.liquibase", "titleI18nKey":"menu.developer.backend.import.liquibase", "icon":"bi-database-up", "routeName":"route.developer.backend.import.liquibase"},
+ {"type":"ROUTE", "order":100, "parentId":"menu.developer.backend", "id":"menu.developer.backend.import.liquibase", "titleI18nKey":"menu.developer.backend.import.liquibase", "icon":"bi-database-up", "routeName":"route.developer.backend.import.liquibase"},
/*开发者工具/后端工具/数据导出*/
{"type":"ROUTE", "order":200, "parentId":"menu.developer.backend", "id":"menu.developer.backend.export.liquibase", "titleI18nKey":"menu.developer.backend.export.liquibase", "icon":"bi-database-down", "routeName":"route.developer.backend.export.liquibase"},
diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/controller/ProcessToolsWebController.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/controller/ProcessToolsWebController.java
new file mode 100644
index 00000000..0e57a61a
--- /dev/null
+++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/controller/ProcessToolsWebController.java
@@ -0,0 +1,34 @@
+package io.sc.platform.flowable.controller;
+
+import io.sc.platform.flowable.service.ProcessQueryService;
+import io.sc.platform.flowable.service.ProcessToolsService;
+import io.sc.platform.flowable.support.*;
+import io.sc.platform.mvc.support.FileDownloader;
+import io.sc.platform.orm.service.support.QueryParameter;
+import io.sc.platform.orm.service.support.criteria.Criteria;
+import io.sc.platform.orm.service.support.criteria.impl.Equals;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.InputStream;
+import java.util.Collections;
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/flowable/tools")
+public class ProcessToolsWebController {
+ @Autowired private ProcessToolsService service;
+
+ @PostMapping("cleanRuntimeData")
+ public void cleanRuntimeData() throws Exception{
+ service.cleanRuntimeData();
+ }
+
+ @PostMapping("cleanHistoryData")
+ public void cleanHistoryData() throws Exception{
+ service.cleanHistoryData();
+ }
+}
diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/jpa/entity/AgentEntity.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/jpa/entity/AgentEntity.java
index 2afb3b49..9a786c7a 100644
--- a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/jpa/entity/AgentEntity.java
+++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/jpa/entity/AgentEntity.java
@@ -79,7 +79,7 @@ public class AgentEntity extends CorporationAuditorEntity {
@Override
public AgentVo toVo() {
AgentVo vo =new AgentVo();
- CorporationAuditorEntity.toVo(vo,this);
+ super.toVo(vo);
vo.setId(this.getId());
vo.setLoginName(this.getLoginName());
vo.setUserName(this.getUserName());
diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/jpa/entity/ProcessEntity.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/jpa/entity/ProcessEntity.java
index 166ae292..6af75b63 100644
--- a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/jpa/entity/ProcessEntity.java
+++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/jpa/entity/ProcessEntity.java
@@ -25,8 +25,6 @@ import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name="SYS_PROCESS")
public class ProcessEntity extends CorporationAuditorEntity {
- private static final long serialVersionUID = 2056614495312244260L;
-
//主键
@Id
@GeneratedValue(generator = "system-uuid")
diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/ProcessToolsService.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/ProcessToolsService.java
new file mode 100644
index 00000000..25b14428
--- /dev/null
+++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/ProcessToolsService.java
@@ -0,0 +1,6 @@
+package io.sc.platform.flowable.service;
+
+public interface ProcessToolsService {
+ public void cleanRuntimeData() throws Exception;
+ public void cleanHistoryData() throws Exception;
+}
diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessOperationServiceImpl.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessOperationServiceImpl.java
index 8f468b4e..c21c3f0c 100644
--- a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessOperationServiceImpl.java
+++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessOperationServiceImpl.java
@@ -17,10 +17,7 @@ import io.sc.platform.flowable.service.AgentService;
import io.sc.platform.flowable.service.AssigneeQueryService;
import io.sc.platform.flowable.service.ProcessEntityService;
import io.sc.platform.flowable.service.ProcessOperationService;
-import io.sc.platform.flowable.support.Assignee;
-import io.sc.platform.flowable.support.CompleteTaskException;
-import io.sc.platform.flowable.support.FrameworkVariableNames;
-import io.sc.platform.flowable.support.Goback;
+import io.sc.platform.flowable.support.*;
import io.sc.platform.flowable.support.command.JumpTaskCommand;
import io.sc.platform.security.util.SecurityUtil;
import org.flowable.bpmn.model.BpmnModel;
@@ -184,7 +181,10 @@ public class ProcessOperationServiceImpl implements ProcessOperationService {
List assignees =assigneeQueryService.query(null,newTask, newUserTaskDefinition);
if(assignees!=null && assignees.size()>0){
if(assignees.size()>1){
- throw new CompleteTaskException(objectMapper.writeValueAsString(assignees));
+ SelectAssigneeWrapper selectAssigneeWrapper =new SelectAssigneeWrapper();
+ selectAssigneeWrapper.setActiveName(newUserTaskDefinition.getName());
+ selectAssigneeWrapper.setAssignees(assignees);
+ throw new CompleteTaskException(objectMapper.writeValueAsString(selectAssigneeWrapper));
}else{
taskService.setAssignee(newTask.getId(), assignees.get(0).getLoginName());
return processInstance;
diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessToolsServiceImpl.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessToolsServiceImpl.java
new file mode 100644
index 00000000..7f2c8f21
--- /dev/null
+++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/service/impl/ProcessToolsServiceImpl.java
@@ -0,0 +1,46 @@
+package io.sc.platform.flowable.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+import io.sc.platform.flowable.service.ProcessToolsService;
+
+import javax.transaction.Transactional;
+
+@Service
+public class ProcessToolsServiceImpl implements ProcessToolsService{
+ @Autowired private JdbcTemplate jdbcTemplate;
+
+ @Override
+ @Transactional
+ public void cleanRuntimeData() throws Exception {
+ jdbcTemplate.update("delete from ACT_RU_ACTINST");
+ jdbcTemplate.update("delete from ACT_RU_DEADLETTER_JOB");
+ jdbcTemplate.update("delete from ACT_RU_ENTITYLINK");
+ jdbcTemplate.update("delete from ACT_RU_EVENT_SUBSCR");
+ jdbcTemplate.update("delete from ACT_RU_EXTERNAL_JOB");
+ jdbcTemplate.update("delete from ACT_RU_HISTORY_JOB");
+ jdbcTemplate.update("delete from ACT_RU_IDENTITYLINK");
+ jdbcTemplate.update("delete from ACT_RU_JOB");
+ jdbcTemplate.update("delete from ACT_RU_SUSPENDED_JOB");
+ jdbcTemplate.update("delete from ACT_RU_TASK");
+ jdbcTemplate.update("delete from ACT_RU_TIMER_JOB");
+ jdbcTemplate.update("delete from ACT_RU_VARIABLE");
+ jdbcTemplate.update("delete from ACT_RU_EXECUTION");
+ }
+
+ @Override
+ @Transactional
+ public void cleanHistoryData() throws Exception {
+ jdbcTemplate.update("delete from ACT_HI_ACTINST");
+ jdbcTemplate.update("delete from ACT_HI_ATTACHMENT");
+ jdbcTemplate.update("delete from ACT_HI_COMMENT");
+ jdbcTemplate.update("delete from ACT_HI_DETAIL");
+ jdbcTemplate.update("delete from ACT_HI_ENTITYLINK");
+ jdbcTemplate.update("delete from ACT_HI_IDENTITYLINK");
+ jdbcTemplate.update("delete from ACT_HI_PROCINST");
+ jdbcTemplate.update("delete from ACT_HI_TASKINST");
+ jdbcTemplate.update("delete from ACT_HI_TSK_LOG");
+ jdbcTemplate.update("delete from ACT_HI_VARINST");
+ }
+}
diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/support/CompleteTaskResponse.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/support/CompleteTaskResponse.java
index d657a40c..644c03a3 100644
--- a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/support/CompleteTaskResponse.java
+++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/support/CompleteTaskResponse.java
@@ -12,13 +12,17 @@ import java.util.List;
*
*/
public class CompleteTaskResponse {
- private int code =CompleteTaskResponseCode.SUCCESS; //响应代码
+ private int code =CompleteTaskResponseCode.SUCCESS; //响应代码
+ private String activeName; // 节点名称
private List assignees =new ArrayList(); //处理人列表
public static CompleteTaskResponse fromAssigneesJson(String assigneesJson) throws Exception{
+ SelectAssigneeWrapper wrapper =ObjectMapper4Json.getMapper().readValue(assigneesJson,SelectAssigneeWrapper.class);
+
CompleteTaskResponse result =new CompleteTaskResponse();
result.setCode(CompleteTaskResponseCode.NEED_SELECT_ASSIGNEE);
- result.setAssignees((List) ObjectMapper4Json.getMapper().readValue(assigneesJson, new TypeReference>(){}));
+ result.setActiveName(wrapper.getActiveName());
+ result.setAssignees(wrapper.getAssignees());
return result;
}
@@ -35,6 +39,15 @@ public class CompleteTaskResponse {
public void setCode(int code) {
this.code = code;
}
+
+ public String getActiveName() {
+ return activeName;
+ }
+
+ public void setActiveName(String activeName) {
+ this.activeName = activeName;
+ }
+
public List getAssignees() {
return assignees;
}
diff --git a/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/support/SelectAssigneeWrapper.java b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/support/SelectAssigneeWrapper.java
new file mode 100644
index 00000000..6aeb10ed
--- /dev/null
+++ b/io.sc.platform.flowable/src/main/java/io/sc/platform/flowable/support/SelectAssigneeWrapper.java
@@ -0,0 +1,25 @@
+package io.sc.platform.flowable.support;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SelectAssigneeWrapper {
+ private String activeName;
+ private List assignees =new ArrayList<>();
+
+ public String getActiveName() {
+ return activeName;
+ }
+
+ public void setActiveName(String activeName) {
+ this.activeName = activeName;
+ }
+
+ public List getAssignees() {
+ return assignees;
+ }
+
+ public void setAssignees(List assignees) {
+ this.assignees = assignees;
+ }
+}
diff --git a/io.sc.platform.lcdp.frontend/package.json b/io.sc.platform.lcdp.frontend/package.json
index 82f0c585..a845b390 100644
--- a/io.sc.platform.lcdp.frontend/package.json
+++ b/io.sc.platform.lcdp.frontend/package.json
@@ -91,7 +91,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
- "platform-core": "8.1.152",
+ "platform-core": "8.1.156",
"quasar": "2.14.5",
"tailwindcss": "3.4.0",
"vue": "3.4.3",
diff --git a/io.sc.platform.lcdp.frontend/src/i18n/messages.json b/io.sc.platform.lcdp.frontend/src/i18n/messages.json
index c4def770..21af6e57 100644
--- a/io.sc.platform.lcdp.frontend/src/i18n/messages.json
+++ b/io.sc.platform.lcdp.frontend/src/i18n/messages.json
@@ -147,6 +147,7 @@
"lcdp.bpm.tabs.processDefine": "Process Define",
"lcdp.bpm.tabs.processInstance": "Process Instance",
"lcdp.bpm.tabs.task": "Process Task",
+ "lcdp.bpm.tabs.tools": "Tools",
"lcdp.bpm.processDefine.grid.title": "Process Define List",
"lcdp.bpm.processDefine.grid.toolbar.design": "Design",
@@ -205,10 +206,20 @@
"lcdp.bpm.variables.grid.entity.text":"Text",
"lcdp.bpm.variables.grid.entity.text2":"Text2",
+ "lcdp.bpm.completeTask.dialog.title": "Complete Task",
+ "lcdp.bpm.selectAssignee.dialog.title": "Select Assignee",
+ "lcdp.bpm.selectAssignee.entity.assignee": "Assignee",
+ "lcdp.bpm.selectAssignee.entity.assignee.tip": "Next Task: {activeName}
There are some assignees can handler this task, but they can NOT claim this task.
Please select one assignee:",
+
"lcdp.bpm.jumpTask.dialog.title": "Task Jump",
"lcdp.bpm.jumpTask.form.entity.taskId": "Task ID",
"lcdp.bpm.jumpTask.form.entity.targetActivityId": "Target Activity Node",
- "lcdp.bpm.jumpTask.form.entity.targetAssignee": "Assignee"
+ "lcdp.bpm.jumpTask.form.entity.targetAssignee": "Assignee",
+
+ "lcdp.bpm.tools.action.cleanRuntimeData": "Clean Runtime Data",
+ "lcdp.bpm.tools.action.cleanRuntimeData.tip": "Are you sure to clean the runtime data?",
+ "lcdp.bpm.tools.action.cleanHistoryData": "Clean History Data",
+ "lcdp.bpm.tools.action.cleanHistoryData.tip": "Are you sure to clean the history data?"
}
diff --git a/io.sc.platform.lcdp.frontend/src/i18n/messages_tw_CN.json b/io.sc.platform.lcdp.frontend/src/i18n/messages_tw_CN.json
index 3cc73ffc..122c73f1 100644
--- a/io.sc.platform.lcdp.frontend/src/i18n/messages_tw_CN.json
+++ b/io.sc.platform.lcdp.frontend/src/i18n/messages_tw_CN.json
@@ -147,6 +147,7 @@
"lcdp.bpm.tabs.processDefine": "流程定義",
"lcdp.bpm.tabs.processInstance": "流程實例",
"lcdp.bpm.tabs.task": "工作任務",
+ "lcdp.bpm.tabs.tools": "工具",
"lcdp.bpm.processDefine.grid.title": "流程定義列表",
"lcdp.bpm.processDefine.grid.toolbar.design": "設計",
@@ -205,8 +206,18 @@
"lcdp.bpm.variables.grid.entity.text":"文本",
"lcdp.bpm.variables.grid.entity.text2":"文本2",
+ "lcdp.bpm.completeTask.dialog.title": "完成任務",
+ "lcdp.bpm.selectAssignee.dialog.title": "選擇處理人",
+ "lcdp.bpm.selectAssignee.entity.assignee": "處理人",
+ "lcdp.bpm.selectAssignee.entity.assignee.tip": "下一個處理任務: {activeName}
存在多個候選人,且流程不允許自行認領任務.
請選擇一個任務處理人:",
+
"lcdp.bpm.jumpTask.dialog.title": "任務跳轉",
"lcdp.bpm.jumpTask.form.entity.taskId": "任務ID",
"lcdp.bpm.jumpTask.form.entity.targetActivityId": "目標節點",
- "lcdp.bpm.jumpTask.form.entity.targetAssignee": "處理人"
+ "lcdp.bpm.jumpTask.form.entity.targetAssignee": "處理人",
+
+ "lcdp.bpm.tools.action.cleanRuntimeData": "清除運行時數據",
+ "lcdp.bpm.tools.action.cleanRuntimeData.tip": "您確定要清除清楚運行時數據嗎?",
+ "lcdp.bpm.tools.action.cleanHistoryData": "清除歷史數據",
+ "lcdp.bpm.tools.action.cleanHistoryData.tip": "您確定要清除歷史數據嗎?"
}
diff --git a/io.sc.platform.lcdp.frontend/src/i18n/messages_zh_CN.json b/io.sc.platform.lcdp.frontend/src/i18n/messages_zh_CN.json
index 7ed9837c..65939fe0 100644
--- a/io.sc.platform.lcdp.frontend/src/i18n/messages_zh_CN.json
+++ b/io.sc.platform.lcdp.frontend/src/i18n/messages_zh_CN.json
@@ -148,6 +148,7 @@
"lcdp.bpm.tabs.processDefine": "流程定义",
"lcdp.bpm.tabs.processInstance": "流程实例",
"lcdp.bpm.tabs.task": "工作任务",
+ "lcdp.bpm.tabs.tools": "工具",
"lcdp.bpm.processDefine.grid.title": "流程定义列表",
"lcdp.bpm.processDefine.grid.toolbar.design": "设计",
@@ -206,8 +207,18 @@
"lcdp.bpm.variables.grid.entity.text":"文本",
"lcdp.bpm.variables.grid.entity.text2":"文本2",
+ "lcdp.bpm.completeTask.dialog.title": "完成任务",
+ "lcdp.bpm.selectAssignee.dialog.title": "选择处理人",
+ "lcdp.bpm.selectAssignee.entity.assignee": "处理人",
+ "lcdp.bpm.selectAssignee.entity.assignee.tip": "下一个处理任务: {activeName}
存在多个候选人,且流程不允许由候选人自行认领任务.
请选择一个任务处理人:",
+
"lcdp.bpm.jumpTask.dialog.title": "任务跳转",
"lcdp.bpm.jumpTask.form.entity.taskId": "任务ID",
"lcdp.bpm.jumpTask.form.entity.targetActivityId": "目标节点",
- "lcdp.bpm.jumpTask.form.entity.targetAssignee": "处理人"
+ "lcdp.bpm.jumpTask.form.entity.targetAssignee": "处理人",
+
+ "lcdp.bpm.tools.action.cleanRuntimeData": "清除运行时数据",
+ "lcdp.bpm.tools.action.cleanRuntimeData.tip": "您确定要清除运行时数据吗?",
+ "lcdp.bpm.tools.action.cleanHistoryData": "清除历史数据",
+ "lcdp.bpm.tools.action.cleanHistoryData.tip": "您确定要清除历史数据吗?"
}
diff --git a/io.sc.platform.lcdp.frontend/src/views/bpm/Bpm.vue b/io.sc.platform.lcdp.frontend/src/views/bpm/Bpm.vue
index 4c41832f..973004a5 100644
--- a/io.sc.platform.lcdp.frontend/src/views/bpm/Bpm.vue
+++ b/io.sc.platform.lcdp.frontend/src/views/bpm/Bpm.vue
@@ -1,16 +1,17 @@
-
-
+
+
-
-
-
-
+
+
+
+
+
-
-
+
+
{
- return selecteds && selecteds.length > 0;
+ enableIf: (arg) => {
+ return arg.selected;
},
- click: (selecteds: object[]) => {
- if (selecteds && selecteds.length > 0) {
- const selected = selecteds[0];
+ click: (arg) => {
+ if (arg.selected) {
selectedTabRef = 'task';
nextTick(() => {
- taskGridRef.getQueryForm().setFieldValue('processInstanceId', selected.id);
+ taskGridRef.getQueryForm().setFieldValue('processInstanceId', arg.selected.id);
taskGridRef.refresh();
});
}
@@ -272,13 +272,12 @@
name: 'variables',
label: $t('lcdp.bpm.task.grid.toolbar.variables'),
icon: 'bi-record',
- enableIf: function (selecteds) {
- return selecteds && selecteds.length > 0;
+ enableIf: (arg) => {
+ return arg.selected;
},
- click: (selecteds) => {
- if (selecteds && selecteds.length > 0) {
- const selected = selecteds[0];
- variableDialogRef.open(selected.id);
+ click: (arg) => {
+ if (arg.selected) {
+ variableDialogRef.open(arg.selected.id);
}
},
},
@@ -336,34 +335,32 @@
[
{
label: $t('operation'),
+ icon: 'bi-cursor',
},
{
name: 'complete',
label: $t('lcdp.bpm.task.grid.toolbar.complete'),
- enableIf: function (selecteds) {
- return selecteds && selecteds.length > 0;
+ icon: 'bi-caret-right',
+ enableIf: function (arg) {
+ return arg.selected;
},
- click: (selecteds) => {
- if (selecteds && selecteds.length > 0) {
- DialogManager.confirm($t('lcdp.bpm.task.grid.toolbar.complete.tip'), () => {
- axios.post(Environment.apiContextPath('/api/flowable/process/operation/complete/') + selecteds[0].id).then(() => {
- taskGridRef.refresh();
- NotifyManager.success();
- });
- });
+ click: (arg) => {
+ if (arg.selected) {
+ completeTaskDialogRef.open(arg.selected.id);
}
},
},
{
name: 'claim',
label: $t('lcdp.bpm.task.grid.toolbar.claim'),
+ icon: 'bi-clipboard-check',
enableIf: function (selecteds) {
return selecteds && selecteds.length > 0 && !selecteds[0].assignee;
},
- click: (selecteds) => {
- if (selecteds && selecteds.length > 0) {
+ click: (arg) => {
+ if (arg.selected) {
DialogManager.confirm($t('lcdp.bpm.task.grid.toolbar.claim.tip'), () => {
- axios.post(Environment.apiContextPath('/api/flowable/process/operation/claim/') + selecteds[0].id).then(() => {
+ axios.post(Environment.apiContextPath('/api/flowable/process/operation/claim/') + arg.selected.id).then(() => {
taskGridRef.refresh();
NotifyManager.success();
});
@@ -374,13 +371,14 @@
{
name: 'unclaim',
label: $t('lcdp.bpm.task.grid.toolbar.unclaim'),
- enableIf: function (selecteds) {
- return selecteds && selecteds.length > 0 && selecteds[0].assignee;
+ icon: 'bi-clipboard-x',
+ enableIf: function (arg) {
+ return arg.selected && arg.selected.assignee;
},
- click: (selecteds) => {
- if (selecteds && selecteds.length > 0) {
+ click: (arg) => {
+ if (arg.selected) {
DialogManager.confirm($t('lcdp.bpm.task.grid.toolbar.unclaim.tip'), () => {
- axios.post(Environment.apiContextPath('/api/flowable/process/operation/unClaim/') + selecteds[0].id).then(() => {
+ axios.post(Environment.apiContextPath('/api/flowable/process/operation/unClaim/') + arg.selected.id).then(() => {
taskGridRef.refresh();
NotifyManager.success();
});
@@ -391,25 +389,27 @@
{
name: 'jump',
label: $t('lcdp.bpm.task.grid.toolbar.jump'),
- enableIf: function (selecteds) {
- return selecteds && selecteds.length > 0;
+ icon: 'bi-sign-turn-right',
+ enableIf: function (arg) {
+ return arg.selected;
},
- click: (selecteds) => {
- if (selecteds && selecteds.length > 0) {
- jumpTaskDialogRef.open(selecteds[0].id);
+ click: (arg) => {
+ if (arg.selected) {
+ jumpTaskDialogRef.open(arg.selected.id);
}
},
},
{
name: 'terminate',
label: $t('lcdp.bpm.task.grid.toolbar.terminate'),
- enableIf: function (selecteds) {
- return selecteds && selecteds.length > 0;
+ icon: 'bi-stop',
+ enableIf: function (arg) {
+ return arg.selected;
},
- click: (selecteds) => {
- if (selecteds && selecteds.length > 0) {
+ click: (arg) => {
+ if (arg.selected) {
DialogManager.confirm($t('lcdp.bpm.task.grid.toolbar.terminate.tip'), () => {
- axios.post(Environment.apiContextPath('/api/flowable/process/operation/terminateProcessInstance/') + selecteds[0].id).then(() => {
+ axios.post(Environment.apiContextPath('/api/flowable/process/operation/terminateProcessInstance/') + arg.selected.id).then(() => {
taskGridRef.refresh();
NotifyManager.success();
});
@@ -422,13 +422,12 @@
name: 'variables',
label: $t('lcdp.bpm.task.grid.toolbar.variables'),
icon: 'bi-record',
- enableIf: function (selecteds) {
- return selecteds && selecteds.length > 0;
+ enableIf: function (arg) {
+ return arg.selected;
},
- click: (selecteds) => {
- if (selecteds && selecteds.length > 0) {
- const selected = selecteds[0];
- variableDialogRef.open(selected.processInstanceId);
+ click: (arg) => {
+ if (arg.selected) {
+ variableDialogRef.open(arg.selected.processInstanceId);
}
},
},
@@ -464,6 +463,12 @@
}"
>
+
+
+
+
+
+
@@ -473,30 +478,55 @@
-
+
diff --git a/io.sc.platform.lcdp.frontend/src/views/bpm/CompleteTaskDialog.vue b/io.sc.platform.lcdp.frontend/src/views/bpm/CompleteTaskDialog.vue
new file mode 100644
index 00000000..03b09b92
--- /dev/null
+++ b/io.sc.platform.lcdp.frontend/src/views/bpm/CompleteTaskDialog.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/io.sc.platform.lcdp.frontend/src/views/bpm/CreateProcessInstanceDialog.vue b/io.sc.platform.lcdp.frontend/src/views/bpm/CreateProcessInstanceDialog.vue
index 7e9a2872..93170ec3 100644
--- a/io.sc.platform.lcdp.frontend/src/views/bpm/CreateProcessInstanceDialog.vue
+++ b/io.sc.platform.lcdp.frontend/src/views/bpm/CreateProcessInstanceDialog.vue
@@ -2,26 +2,14 @@
+
diff --git a/io.sc.platform.lcdp.frontend/src/views/bpm/WWorkflowAction.vue b/io.sc.platform.lcdp.frontend/src/views/bpm/WWorkflowAction.vue
new file mode 100644
index 00000000..3e6d4a8e
--- /dev/null
+++ b/io.sc.platform.lcdp.frontend/src/views/bpm/WWorkflowAction.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
diff --git a/io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/jpa/entity/ConfigureEntity.java b/io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/jpa/entity/ConfigureEntity.java
index 7bd87f71..2ffc04dd 100644
--- a/io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/jpa/entity/ConfigureEntity.java
+++ b/io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/jpa/entity/ConfigureEntity.java
@@ -54,7 +54,7 @@ public class ConfigureEntity extends CorporationAuditorEntity {
@Override
public ConfigureVo toVo() {
ConfigureVo vo =new ConfigureVo();
- CorporationAuditorEntity.toVo(vo,this);
+ super.toVo(vo);
vo.setId(this.getId());
vo.setName(this.getName());
vo.setActive(this.getActive());
diff --git a/io.sc.platform.mvc.frontend/package.json b/io.sc.platform.mvc.frontend/package.json
index c2a12ffc..4f75de91 100644
--- a/io.sc.platform.mvc.frontend/package.json
+++ b/io.sc.platform.mvc.frontend/package.json
@@ -78,7 +78,7 @@
"luckyexcel": "1.0.1",
"mockjs": "1.1.0",
"pinia": "2.1.7",
- "platform-core": "8.1.152",
+ "platform-core": "8.1.155",
"quasar": "2.14.5",
"tailwindcss": "3.4.0",
"vue": "3.4.3",
diff --git a/io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/AuditorVo.java b/io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/AuditorVo.java
index b7765344..af1e5fc2 100644
--- a/io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/AuditorVo.java
+++ b/io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/AuditorVo.java
@@ -1,6 +1,6 @@
package io.sc.platform.orm.api.vo;
-import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonProperty;
import io.sc.platform.orm.api.enums.DataComeFrom;
import java.util.Date;
@@ -8,38 +8,35 @@ import java.util.Date;
/**
* 审计实体 VO 类
*/
-@JsonPropertyOrder({
- "jpaVersion",
- "dataComeFrom",
- "creator",
- "createDate",
- "lastModifier",
- "lastModifyDate"
-})
public class AuditorVo extends VersionVo {
/**
* 数据来源
*/
+ @JsonProperty(index = 10002)
private DataComeFrom dataComeFrom;
/**
* 创建人(登录名)
*/
+ @JsonProperty(index = 10003)
protected String creator;
/**
* 创建日期
*/
+ @JsonProperty(index = 10004)
protected Date createDate;
/**
* 最后修改人(登录名)
*/
+ @JsonProperty(index = 10005)
protected String lastModifier;
/**
* 最后修改日期
*/
+ @JsonProperty(index = 10006)
protected Date lastModifyDate;
public DataComeFrom getDataComeFrom() {
diff --git a/io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/CorporationAuditorVo.java b/io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/CorporationAuditorVo.java
index ef08c0df..18d4743e 100644
--- a/io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/CorporationAuditorVo.java
+++ b/io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/CorporationAuditorVo.java
@@ -1,25 +1,17 @@
package io.sc.platform.orm.api.vo;
-import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonProperty;
/**
* 多法人审计实体 VO 类
*/
-@JsonPropertyOrder({
- "jpaVersion",
- "dataComeFrom",
- "creator",
- "createDate",
- "lastModifier",
- "lastModifyDate",
- "corporationCode"
-})
public class CorporationAuditorVo extends AuditorVo {
public static final String DEFAULT_CODE ="_PRIMARY_";
/**
* 法人代码
*/
+ @JsonProperty(index = 10007)
protected String corporationCode;
public String getCorporationCode() {
diff --git a/io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/VersionVo.java b/io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/VersionVo.java
index 7907f4ff..24500fd6 100644
--- a/io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/VersionVo.java
+++ b/io.sc.platform.orm.api/src/main/java/io/sc/platform/orm/api/vo/VersionVo.java
@@ -1,16 +1,19 @@
package io.sc.platform.orm.api.vo;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
/**
* 版本化实体 VO 类
*/
public abstract class VersionVo extends BaseVo {
- protected int jpaVersion;
+ @JsonProperty(index = 10001)
+ protected Integer jpaVersion;
- public int getJpaVersion() {
+ public Integer getJpaVersion() {
return jpaVersion;
}
- public void setJpaVersion(int jpaVersion) {
+ public void setJpaVersion(Integer jpaVersion) {
this.jpaVersion = jpaVersion;
}
}
diff --git a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/entity/AuditorEntity.java b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/entity/AuditorEntity.java
index bf001d4a..beb113e6 100644
--- a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/entity/AuditorEntity.java
+++ b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/entity/AuditorEntity.java
@@ -26,26 +26,22 @@ public abstract class AuditorEntity extends VersionEntity extends VersionEntity implements Serializable {
return toVo();
}
- public static void toVo(BaseVo vo,BaseEntity entity){
+ public void toVo(V vo){
}
}
diff --git a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/entity/CorporationAuditorEntity.java b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/entity/CorporationAuditorEntity.java
index aa37b215..37b75b18 100644
--- a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/entity/CorporationAuditorEntity.java
+++ b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/entity/CorporationAuditorEntity.java
@@ -16,6 +16,7 @@ public abstract class CorporationAuditorEntity e
@Column(name="CORP_CODE_",length=36)
protected String corporationCode ="_PRIMARY_";
+ @Override
public void toVo(CorporationAuditorVo vo){
if(vo!=null){
super.toVo(vo);
diff --git a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/entity/VersionEntity.java b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/entity/VersionEntity.java
index 63262f63..a23d5765 100644
--- a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/entity/VersionEntity.java
+++ b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/entity/VersionEntity.java
@@ -7,27 +7,30 @@ import io.sc.platform.orm.api.vo.BaseVo;
import io.sc.platform.orm.api.vo.VersionVo;
import javax.persistence.Column;
+import javax.persistence.MappedSuperclass;
import javax.persistence.Version;
/**
* 版本化实体类,可实现乐观锁
*/
+@MappedSuperclass
public abstract class VersionEntity extends BaseEntity{
@Version
@Column(name="JPA_VERSION_")
- protected int jpaVersion;
+ protected Integer jpaVersion;
+ @Override
public void toVo(VersionVo vo){
if(vo!=null){
vo.setJpaVersion(this.getJpaVersion());
}
}
- public int getJpaVersion() {
+ public Integer getJpaVersion() {
return jpaVersion;
}
- public void setJpaVersion(int jpaVersion) {
+ public void setJpaVersion(Integer jpaVersion) {
this.jpaVersion = jpaVersion;
}
}
diff --git a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/impl/DaoServiceImpl.java b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/impl/DaoServiceImpl.java
index eadadab4..2dcb60e0 100644
--- a/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/impl/DaoServiceImpl.java
+++ b/io.sc.platform.orm/src/main/java/io/sc/platform/orm/service/impl/DaoServiceImpl.java
@@ -166,9 +166,9 @@ public abstract class DaoServiceImpl {
+ return arg.form.getFieldValue('type') === 'GROUP' && Tools.isUndefinedOrNull(arg.form.getFieldValue('parent'));
+ },
+ },
{
name: 'javaScript',
label: $t('system.menu.grid.entity.javaScript'),
type: 'textarea',
- showIf: (form) => {
- return form.getFieldValue('type') === 'JAVASCRIPT';
+ showIf: (arg) => {
+ return arg.form.getFieldValue('type') === 'JAVASCRIPT';
},
},
{
name: 'routeName',
label: $t('system.menu.grid.entity.routeName'),
type: 'text',
- showIf: (form) => {
- return form.getFieldValue('type') === 'ROUTE';
+ showIf: (arg) => {
+ return arg.form.getFieldValue('type') === 'ROUTE';
},
},
{
name: 'routeQuery',
label: $t('system.menu.grid.entity.routeQuery'),
type: 'text',
- showIf: (form) => {
- return form.getFieldValue('type') === 'ROUTE';
+ showIf: (arg) => {
+ return arg.form.getFieldValue('type') === 'ROUTE';
},
},
{
name: 'url',
label: $t('url'),
type: 'text',
- showIf: (form) => {
- return form.getFieldValue('type') === 'URL';
+ showIf: (arg) => {
+ return arg.form.getFieldValue('type') === 'URL';
},
},
{
@@ -126,8 +135,8 @@
type: 'select',
options: Options.enum(UrlOpenTypeEnum, false),
defaultValue: 'NEW_WINDOW',
- showIf: (form) => {
- return form.getFieldValue('type') === 'URL';
+ showIf: (arg) => {
+ return arg.form.getFieldValue('type') === 'URL';
},
},
],
@@ -215,7 +224,7 @@