+
审批意见:{{ task.reason }}
Date: Thu, 13 Feb 2025 19:04:05 +0800
Subject: [PATCH 04/15] =?UTF-8?q?=E3=80=90=E4=BB=A3=E7=A0=81=E4=BC=98?=
=?UTF-8?q?=E5=8C=96=E3=80=91BPM=EF=BC=9AsliceName=20=3D>=20subString=20?=
=?UTF-8?q?=E6=9B=B4=E9=80=9A=E7=94=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/utils/index.ts | 14 +++++++-------
src/views/bpm/model/CategoryDraggableModel.vue | 4 ++--
src/views/bpm/processInstance/create/index.vue | 8 ++++----
3 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/src/utils/index.ts b/src/utils/index.ts
index 7e56e8bed..fc6cea8e7 100644
--- a/src/utils/index.ts
+++ b/src/utils/index.ts
@@ -453,14 +453,14 @@ export function jsonParse(str: string) {
/**
* 截取字符串
*
- * @param name
- * @param start
- * @param end
+ * @param str 字符串
+ * @param start 开始位置
+ * @param end 结束位置
*/
-export const sliceName = (name: string,start: number, end : number) => {
- if (name.length > end) {
- return name.slice(start, end)
+export const subString = (str: string, start: number, end: number) => {
+ if (str.length > end) {
+ return str.slice(start, end)
}
- return name
+ return str
}
diff --git a/src/views/bpm/model/CategoryDraggableModel.vue b/src/views/bpm/model/CategoryDraggableModel.vue
index 274579360..71b79b781 100644
--- a/src/views/bpm/model/CategoryDraggableModel.vue
+++ b/src/views/bpm/model/CategoryDraggableModel.vue
@@ -89,7 +89,7 @@
- {{ sliceName(row.name,0,2) }}
+ {{ subString(row.name, 0, 2) }}
{{ row.name }}
@@ -273,7 +273,7 @@ import { useAppStore } from '@/store/modules/app'
import { cloneDeep, isEqual } from 'lodash-es'
import { useTagsView } from '@/hooks/web/useTagsView'
import { useDebounceFn } from '@vueuse/core'
-import { sliceName } from '@/utils/index'
+import { subString } from '@/utils/index'
defineOptions({ name: 'BpmModel' })
diff --git a/src/views/bpm/processInstance/create/index.vue b/src/views/bpm/processInstance/create/index.vue
index 62d9ea219..2c714d173 100644
--- a/src/views/bpm/processInstance/create/index.vue
+++ b/src/views/bpm/processInstance/create/index.vue
@@ -64,9 +64,9 @@
class="w-32px h-32px"
/>
- {{
- sliceName(definition.name,0,2)
- }}
+
+ {{ subString(definition.name, 0, 2) }}
+
{{ definition.name }}
@@ -97,7 +97,7 @@ import * as ProcessInstanceApi from '@/api/bpm/processInstance'
import { CategoryApi, CategoryVO } from '@/api/bpm/category'
import ProcessDefinitionDetail from './ProcessDefinitionDetail.vue'
import { groupBy } from 'lodash-es'
-import { sliceName } from '@/utils/index'
+import { subString } from '@/utils/index'
defineOptions({ name: 'BpmProcessInstanceCreate' })
--
Gitee
From 26e28965c9ab0a341c6e38e5569d10db8d34062e Mon Sep 17 00:00:00 2001
From: YunaiV
Date: Thu, 13 Feb 2025 19:26:28 +0800
Subject: [PATCH 05/15] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E3=80=91BPM=EF=BC=9A=E5=A2=9E=E5=8A=A0=E6=8C=87?=
=?UTF-8?q?=E5=AE=9A=E5=B2=97=E4=BD=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/SimpleProcessDesignerV2/src/consts.ts | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/components/SimpleProcessDesignerV2/src/consts.ts b/src/components/SimpleProcessDesignerV2/src/consts.ts
index 887edf80d..b51bb919a 100644
--- a/src/components/SimpleProcessDesignerV2/src/consts.ts
+++ b/src/components/SimpleProcessDesignerV2/src/consts.ts
@@ -527,10 +527,11 @@ NODE_DEFAULT_NAME.set(NodeType.TRANSACTOR_NODE, '办理人')
export const CANDIDATE_STRATEGY: DictDataVO[] = [
{ label: '指定成员', value: CandidateStrategy.USER },
{ label: '指定角色', value: CandidateStrategy.ROLE },
+ { label: '指定岗位', value: CandidateStrategy.POST },
{ label: '部门成员', value: CandidateStrategy.DEPT_MEMBER },
{ label: '部门负责人', value: CandidateStrategy.DEPT_LEADER },
{ label: '连续多级部门负责人', value: CandidateStrategy.MULTI_LEVEL_DEPT_LEADER },
- { label: '发起人自选', value: CandidateStrategy.START_USER_SELECT },
+ { label: '指定岗位', value: CandidateStrategy.MULTI_LEVEL_DEPT_LEADER },
{ label: '发起人本人', value: CandidateStrategy.START_USER },
{ label: '发起人部门负责人', value: CandidateStrategy.START_USER_DEPT_LEADER },
{ label: '发起人连续部门负责人', value: CandidateStrategy.START_USER_MULTI_LEVEL_DEPT_LEADER },
--
Gitee
From 0f812dbfd936e9966a8e738bbed48c150b286ce5 Mon Sep 17 00:00:00 2001
From: Lesan <1960681385@qq.com>
Date: Fri, 14 Feb 2025 08:26:19 +0800
Subject: [PATCH 06/15] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=8A=82?=
=?UTF-8?q?=E7=82=B9=E7=B1=BB=E5=9E=8B=E4=BB=A5=E5=8C=BA=E5=88=86=E4=B8=8D?=
=?UTF-8?q?=E5=90=8C=E8=8A=82=E7=82=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/assets/svgs/bpm/handle.svg | 1 +
.../SimpleProcessDesignerV2/src/NodeHandler.vue | 5 ++---
.../src/nodes-config/UserTaskNodeConfig.vue | 15 +++++++++------
.../src/nodes/UserTaskNode.vue | 8 +++++++-
.../theme/simple-process-designer.scss | 10 +++++++++-
.../detail/ProcessInstanceOperationButton.vue | 13 +++++++++----
.../detail/ProcessInstanceTimeline.vue | 5 +++--
7 files changed, 40 insertions(+), 17 deletions(-)
create mode 100644 src/assets/svgs/bpm/handle.svg
diff --git a/src/assets/svgs/bpm/handle.svg b/src/assets/svgs/bpm/handle.svg
new file mode 100644
index 000000000..a9547a7dd
--- /dev/null
+++ b/src/assets/svgs/bpm/handle.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue b/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
index 0dcd63e4d..9af188a75 100644
--- a/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
+++ b/src/components/SimpleProcessDesignerV2/src/NodeHandler.vue
@@ -15,10 +15,9 @@
审批人
-
-
diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue
index b0d10ff07..b6ce9ed30 100644
--- a/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue
+++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue
@@ -1,4 +1,3 @@
-
-
+
-
+
-
+
-
审批人为空时
+
{{ nodeTypeName }}人为空时
@@ -449,7 +448,6 @@
-
字段权限
@@ -681,6 +679,11 @@ const {
const userTaskListenerRef = ref()
+// 节点类型名称
+const nodeTypeName = computed(() => {
+ return currentNode.value.type === NodeType.TRANSACTOR_NODE ? '办理' : '审批'
+})
+
// 保存配置
const saveConfig = async () => {
// activeTabName.value = 'user'
diff --git a/src/components/SimpleProcessDesignerV2/src/nodes/UserTaskNode.vue b/src/components/SimpleProcessDesignerV2/src/nodes/UserTaskNode.vue
index eac24ce82..78f4f89e7 100644
--- a/src/components/SimpleProcessDesignerV2/src/nodes/UserTaskNode.vue
+++ b/src/components/SimpleProcessDesignerV2/src/nodes/UserTaskNode.vue
@@ -9,7 +9,13 @@
]"
>
-
+
+
+
-
-
+
@@ -505,6 +504,7 @@ import * as TaskApi from '@/api/bpm/task'
import * as ProcessInstanceApi from '@/api/bpm/processInstance'
import * as UserApi from '@/api/system/user'
import {
+ NodeType,
OPERATION_BUTTON_NAME,
OperationButtonType
} from '@/components/SimpleProcessDesignerV2/src/consts'
@@ -559,7 +559,9 @@ const approveReasonForm = reactive({
})
const approveReasonRule = computed(() => {
return {
- reason: [{ required: reasonRequire.value, message: '审批意见不能为空', trigger: 'blur' }],
+ reason: [
+ { required: reasonRequire.value, message: taskName + '意见不能为空', trigger: 'blur' }
+ ],
signPicUrl: [{ required: true, message: '签名不能为空', trigger: 'change' }]
}
})
@@ -968,11 +970,14 @@ const getButtonDisplayName = (btnType: OperationButtonType) => {
return displayName
}
+const taskName = ref('审批')
+
const loadTodoTask = (task: any) => {
approveForm.value = {}
approveFormFApi.value = {}
runningTask.value = task
reasonRequire.value = task?.reasonRequire ?? false
+ taskName.value = task?.nodeType === NodeType.TRANSACTOR_NODE ? '办理' : '审批'
// 处理 approve 表单.
if (task && task.formId && task.formConf) {
const tempApproveForm = {}
diff --git a/src/views/bpm/processInstance/detail/ProcessInstanceTimeline.vue b/src/views/bpm/processInstance/detail/ProcessInstanceTimeline.vue
index 835674170..519da3ef6 100644
--- a/src/views/bpm/processInstance/detail/ProcessInstanceTimeline.vue
+++ b/src/views/bpm/processInstance/detail/ProcessInstanceTimeline.vue
@@ -180,6 +180,7 @@ import copySvg from '@/assets/svgs/bpm/copy.svg'
import conditionSvg from '@/assets/svgs/bpm/condition.svg'
import parallelSvg from '@/assets/svgs/bpm/parallel.svg'
import finishSvg from '@/assets/svgs/bpm/finish.svg'
+import handleSvg from '@/assets/svgs/bpm/handle.svg'
defineOptions({ name: 'BpmProcessInstanceTimeline' })
withDefaults(
@@ -241,8 +242,8 @@ const nodeTypeSvgMap = {
[NodeType.START_USER_NODE]: { color: '#909398', svg: starterSvg },
// 审批人节点
[NodeType.USER_TASK_NODE]: { color: '#ff943e', svg: auditorSvg },
- // 办理人节点 TODO @lesan:
- [NodeType.TRANSACTOR_NODE]: { color: '#ff943e', svg: auditorSvg },
+ // 办理人节点
+ [NodeType.TRANSACTOR_NODE]: { color: '#ff943e', svg: handleSvg },
// 抄送人节点
[NodeType.COPY_TASK_NODE]: { color: '#3296fb', svg: copySvg },
// 条件分支节点
--
Gitee
From a69d1d2dbe18464500f3c2500c3ed6769fb46b0e Mon Sep 17 00:00:00 2001
From: lizhixian <18210040298@163.com>
Date: Fri, 14 Feb 2025 09:49:57 +0800
Subject: [PATCH 07/15] =?UTF-8?q?fix:=20=E9=AD=94=E6=B3=95=E5=AD=97?=
=?UTF-8?q?=E7=AC=A6=E8=B0=83=E6=95=B4=E6=88=90=E6=9E=9A=E4=B8=BE=E7=B1=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../custom-config/components/UserTaskCustomConfig.vue | 7 ++++---
src/views/bpm/model/form/FormDesign.vue | 11 ++++++-----
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTaskCustomConfig.vue b/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTaskCustomConfig.vue
index aab130d08..29758e8c4 100644
--- a/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTaskCustomConfig.vue
+++ b/src/components/bpmnProcessDesigner/package/penal/custom-config/components/UserTaskCustomConfig.vue
@@ -123,7 +123,7 @@
字段权限
-
+
字段名称
@@ -191,6 +191,7 @@ import {
} from '@/components/SimpleProcessDesignerV2/src/consts'
import * as UserApi from '@/api/system/user'
import { useFormFieldsPermission } from '@/components/SimpleProcessDesignerV2/src/node'
+import { BpmModelFormType } from '@/utils/constants'
defineOptions({ name: 'ElementCustomConfig4UserTask' })
const props = defineProps({
@@ -497,9 +498,9 @@ onMounted(async () => {
--
Gitee
From 91e2e32aceba2e6b3b63cbb7af65db7f3a565088 Mon Sep 17 00:00:00 2001
From: Lemon <1599456917@qq.com>
Date: Tue, 18 Feb 2025 14:43:27 +0800
Subject: [PATCH 15/15] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BB=98=E5=88=B6?=
=?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=9B=BE=20=E5=AE=A1=E6=89=B9=E4=BA=BA,=20?=
=?UTF-8?q?=E5=8A=9E=E7=90=86=E4=BA=BA=EF=BC=8C=E6=8A=84=E9=80=81=20?=
=?UTF-8?q?=E7=9A=84=E8=A1=A8=E5=8D=95=E5=AD=97=E6=AE=B5=E6=9D=83=E9=99=90?=
=?UTF-8?q?=E7=9A=84=E4=B8=80=E9=94=AE=E8=AE=BE=E7=BD=AE=E7=9A=84=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/nodes-config/CopyTaskNodeConfig.vue | 24 +++++++++++-
.../src/nodes-config/StartUserNodeConfig.vue | 36 ++++++++++++++++--
.../src/nodes-config/UserTaskNodeConfig.vue | 37 +++++++++++++++++--
3 files changed, 89 insertions(+), 8 deletions(-)
diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue
index f83f18505..9b74e7e7e 100644
--- a/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue
+++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/CopyTaskNodeConfig.vue
@@ -195,9 +195,13 @@
字段名称
- 只读
+ 只读
+
+
可编辑
- 隐藏
+ 隐藏
+
+
{
// 表单字段权限
getNodeConfigFormFields(node.fieldsPermission)
}
+const readSwitch = ref(false);
+const noneSwitch = ref(false);
+const updatePermission = (type: string) => {
+ if (type === 'READ') {
+ readSwitch.value = true;
+ noneSwitch.value = false;
+ } else if (type === 'NONE') {
+ readSwitch.value = false;
+
+ noneSwitch.value = true;
+ }
+
+ fieldsPermissionConfig.value.forEach(field => {
+ field.permission = type === 'READ' ? FieldPermissionType.READ : FieldPermissionType.NONE;
+ });
+};
defineExpose({ openDrawer, showCopyTaskNodeConfig }) // 暴露方法给父组件
diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue
index 26c8e1315..11c43a47b 100644
--- a/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue
+++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/StartUserNodeConfig.vue
@@ -46,9 +46,15 @@
字段名称
- 只读
- 可编辑
- 隐藏
+ 只读
+
+
+ 可编辑
+
+
+ 隐藏
+
+
{
// 表单字段权限
getNodeConfigFormFields(node.fieldsPermission)
}
+const readSwitch = ref(false)
+const writeSwitch = ref(false)
+const noneSwitch = ref(false)
+const updatePermission = (type) => {
+ if (type === 'READ') {
+ readSwitch.value = true;
+ writeSwitch.value = false;
+ noneSwitch.value = false;
+ } else if (type === 'WRITE') {
+ readSwitch.value = false;
+ writeSwitch.value = true;
+ noneSwitch.value = false;
+ } else if (type === 'NONE') {
+ readSwitch.value = false;
+ writeSwitch.value = false;
+ noneSwitch.value = true;
+ }
+ fieldsPermissionConfig.value.forEach(item => {
+ item.permission = type === 'READ' ? FieldPermissionType.READ :
+ type === 'WRITE' ? FieldPermissionType.WRITE :
+ FieldPermissionType.NONE;
+ });
+}
defineExpose({ openDrawer, showStartUserNodeConfig }) // 暴露方法给父组件
+
diff --git a/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue b/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue
index 32ad6a06b..dfe5a4e92 100644
--- a/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue
+++ b/src/components/SimpleProcessDesignerV2/src/nodes-config/UserTaskNodeConfig.vue
@@ -454,9 +454,15 @@
字段名称
- 只读
- 可编辑
- 隐藏
+ 只读
+
+
+ 可编辑
+
+
+ 隐藏
+
+
{
+ if (type === 'READ') {
+ readSwitch.value = true;
+ writeSwitch.value = false;
+ noneSwitch.value = false;
+ } else if (type === 'WRITE') {
+ readSwitch.value = false;
+ writeSwitch.value = true;
+ noneSwitch.value = false;
+ } else if (type === 'NONE') {
+ readSwitch.value = false;
+ writeSwitch.value = false;
+ noneSwitch.value = true;
+ }
+
+ fieldsPermissionConfig.value.forEach(field => {
+ field.permission = type === 'READ' ? FieldPermissionType.READ :
+ type === 'WRITE' ? FieldPermissionType.WRITE :
+ FieldPermissionType.NONE;
+ });
+};