Merge branch 'lhq20250428' into 'dev'
1.添加审批人数量限制配置2.草稿箱添加当前过滤和任务名和流程发起者 See merge request itc-framework/ma/2024/front!70
This commit is contained in:
@ -90,6 +90,10 @@ export interface ProcessConfig {
|
|||||||
parentId: string; //父节点(流程id)
|
parentId: string; //父节点(流程id)
|
||||||
remark: string; //节点描述
|
remark: string; //节点描述
|
||||||
code: string; //模板编码
|
code: string; //模板编码
|
||||||
|
minApprover: string; //最少审批人
|
||||||
|
maxApprover: string; //最多审批人
|
||||||
|
maxCirculate: string; //最多传阅人
|
||||||
|
minCirculate: string; //最少传阅人
|
||||||
category: undefined | string; //分类
|
category: undefined | string; //分类
|
||||||
nameRule?: string; //命名规则
|
nameRule?: string; //命名规则
|
||||||
nameRuleConfigs?: NameRule; // 命名规则列表
|
nameRuleConfigs?: NameRule; // 命名规则列表
|
||||||
|
|||||||
@ -8,7 +8,6 @@
|
|||||||
:clickRowToExpand="true"
|
:clickRowToExpand="true"
|
||||||
:treeData="treeData"
|
:treeData="treeData"
|
||||||
:fieldNames="fieldNames"
|
:fieldNames="fieldNames"
|
||||||
@row-dbClick="dbClickRow"
|
|
||||||
:row-selection="rowSelection"
|
:row-selection="rowSelection"
|
||||||
>
|
>
|
||||||
<template #title="item">
|
<template #title="item">
|
||||||
@ -202,6 +201,7 @@
|
|||||||
import { InputParamItem } from '/@/components/ApiConfig/src/interface';
|
import { InputParamItem } from '/@/components/ApiConfig/src/interface';
|
||||||
import { getDraftInfo } from '/@/api/workflow/process';
|
import { getDraftInfo } from '/@/api/workflow/process';
|
||||||
import FlowRecord from '/@/views/workflow/task/components/flow/FlowRecord.vue';
|
import FlowRecord from '/@/views/workflow/task/components/flow/FlowRecord.vue';
|
||||||
|
import {de} from "@fullcalendar/core/internal-common";
|
||||||
interface SearchDate {
|
interface SearchDate {
|
||||||
fieldName: string;
|
fieldName: string;
|
||||||
format: string;
|
format: string;
|
||||||
@ -578,26 +578,23 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function handleView(record: Recordable) {
|
function handleView(record: Recordable) {
|
||||||
if (record.workflowData?.taskIds && record.workflowData.taskIds.length) {
|
const { processId, taskIds, schemaId } = record.workflowData || {};
|
||||||
const { processId, taskIds, schemaId } = record.workflowData;
|
if (taskIds && taskIds.length) {
|
||||||
router.push({
|
router.push({
|
||||||
path: '/flow/' + schemaId + '/' + (processId || '') + '/approveFlow',
|
path: '/flow/' + schemaId + '/' + (processId || '') + '/approveFlow',
|
||||||
query: {
|
query: {
|
||||||
taskId: taskIds[0],
|
taskId: taskIds[0],
|
||||||
rtId: currentRoute.value.query.rtId
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if (record.workflowData?.schemaId && !record.workflowData.taskIds) {
|
} else if (schemaId && !taskIds && processId) {
|
||||||
const { processId, schemaId } = record.workflowData;
|
|
||||||
router.push({
|
router.push({
|
||||||
path: '/flow/' + schemaId + '/' + (processId || '') + '/approveFlow',
|
path: '/flow/' + schemaId + '/' + processId + '/approveFlow',
|
||||||
query: {
|
query: {
|
||||||
readonly: 1,
|
readonly: 1,
|
||||||
taskId: '',
|
taskId: '',
|
||||||
rtId: currentRoute.value.query.rtId
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
}else {
|
||||||
const info = {
|
const info = {
|
||||||
id: record[pkField.value],
|
id: record[pkField.value],
|
||||||
releaseId: menuId.value,
|
releaseId: menuId.value,
|
||||||
@ -758,6 +755,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function handleLaunchProcess(record: Recordable) {
|
async function handleLaunchProcess(record: Recordable) {
|
||||||
|
debugger
|
||||||
if (record.workflowData) {
|
if (record.workflowData) {
|
||||||
if (record.workflowData.draftId) {
|
if (record.workflowData.draftId) {
|
||||||
let res = await getDraftInfo(record.workflowData.draftId);
|
let res = await getDraftInfo(record.workflowData.draftId);
|
||||||
@ -783,10 +781,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
function handleApproveProcess(record: Recordable) {
|
function handleApproveProcess(record: Recordable) {
|
||||||
visibleApproveProcessRef.value = true;
|
const { processId, taskIds, schemaId } = record.workflowData;
|
||||||
schemaIdRef.value = record.workflowData.schemaId;
|
router.push({
|
||||||
processIdRef.value = record.workflowData.processId;
|
path: '/flow/' + schemaId + '/' + (processId || '') + '/approveFlow',
|
||||||
taskIdRef.value = record.workflowData.taskIds[0];
|
query: {
|
||||||
|
taskId: taskIds[0],
|
||||||
|
rtId: currentRoute.value.query.rtId
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
function handleCloseLaunch() {
|
function handleCloseLaunch() {
|
||||||
visibleLaunchProcessRef.value = false;
|
visibleLaunchProcessRef.value = false;
|
||||||
@ -948,35 +950,6 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function dbClickRow(record) {
|
|
||||||
if (record.workflowData?.taskIds && record.workflowData.taskIds.length) {
|
|
||||||
const { processId, taskIds, schemaId } = record.workflowData;
|
|
||||||
router.push({
|
|
||||||
path: '/flow/' + schemaId + '/' + (processId || '') + '/approveFlow',
|
|
||||||
query: {
|
|
||||||
taskId: taskIds[0],
|
|
||||||
rtId: currentRoute.value.query.rtId
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else if (record.workflowData?.schemaId && !record.workflowData.taskIds) {
|
|
||||||
const { processId, schemaId } = record.workflowData;
|
|
||||||
router.push({
|
|
||||||
path: '/flow/' + schemaId + '/' + (processId || '') + '/approveFlow',
|
|
||||||
query: {
|
|
||||||
readonly: 1,
|
|
||||||
taskId: '',
|
|
||||||
rtId: currentRoute.value.query.rtId
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
router.push({
|
|
||||||
path: '/form/infoTaskManageItem/' + record.id + '/viewForm',
|
|
||||||
query: {
|
|
||||||
formPath: 'infoManage/infoTaskManageItem'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const rowSelection: TableProps['rowSelection'] = {
|
const rowSelection: TableProps['rowSelection'] = {
|
||||||
onChange: (selectedRowKeys: string[], selectedRows: DataType[]) => {
|
onChange: (selectedRowKeys: string[], selectedRows: DataType[]) => {
|
||||||
|
|||||||
@ -33,28 +33,52 @@
|
|||||||
)
|
)
|
||||||
"
|
"
|
||||||
:label="t('临时审批人:')"
|
:label="t('临时审批人:')"
|
||||||
v-if="props.provisionalApprover == true || props.provisionalApprover == false"
|
|
||||||
>
|
>
|
||||||
<a-switch :checked="props.provisionalApprover" @change="changeProvisionalApprover" />
|
<a-switch :checked="props.provisionalApprover" @change="changeProvisionalApprover" />
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
|
||||||
<!-- 多选 :是 / 否 -->
|
<!-- 多选 :是 / 否 -->
|
||||||
<FormItem
|
<FormItem :label="t('多选:')">
|
||||||
:label="t('多选:')"
|
|
||||||
>
|
|
||||||
<a-switch :checked="props.isChooseMulti" @change="changeIsChooseMulti" />
|
<a-switch :checked="props.isChooseMulti" @change="changeIsChooseMulti" />
|
||||||
</FormItem>
|
</FormItem>
|
||||||
<!-- 全选 :是 / 否 -->
|
<FormItem :label="t('全选:')">
|
||||||
<FormItem
|
|
||||||
:label="t('全选:')"
|
|
||||||
>
|
|
||||||
<a-switch :checked="props.isChooseAll" @change="changeIsChooseAll" />
|
<a-switch :checked="props.isChooseAll" @change="changeIsChooseAll" />
|
||||||
</FormItem>
|
</FormItem>
|
||||||
<!-- 只读 :是 / 否 -->
|
<FormItem :label="t('只读:')">
|
||||||
<FormItem
|
|
||||||
:label="t('只读:')"
|
|
||||||
>
|
|
||||||
<a-switch :checked="props.isReadOnly" @change="changeIsReadOnly" />
|
<a-switch :checked="props.isReadOnly" @change="changeIsReadOnly" />
|
||||||
</FormItem>
|
</FormItem>
|
||||||
|
<FormItem :label="t('审批人最多:')" >
|
||||||
|
<a-input-number
|
||||||
|
v-model:value="props.maxApprover"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
@change="changeMaxApprover"
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
<FormItem :label="t('审批人最少:')">
|
||||||
|
<a-input-number
|
||||||
|
v-model:value="props.minApprover"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
@change="changeMinApprover"
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
<FormItem :label="t('传阅人最多:')">
|
||||||
|
<a-input-number
|
||||||
|
v-model:value="props.maxCirculate"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
@change="changeMaxCirculate"
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
<FormItem :label="t('传阅人最少:')">
|
||||||
|
<a-input-number
|
||||||
|
v-model:value="props.minCirculate"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
@change="changeMinCirculate"
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="ProcessBasic">
|
<script setup lang="ts" name="ProcessBasic">
|
||||||
@ -70,6 +94,10 @@
|
|||||||
'update:isChooseMulti',
|
'update:isChooseMulti',
|
||||||
'update:isChooseAll',
|
'update:isChooseAll',
|
||||||
'update:isReadOnly',
|
'update:isReadOnly',
|
||||||
|
'update:minApprover',
|
||||||
|
'update:maxApprover',
|
||||||
|
'update:maxCirculate',
|
||||||
|
'update:minCirculate'
|
||||||
]);
|
]);
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
autoAgreeRule: Array,
|
autoAgreeRule: Array,
|
||||||
@ -91,6 +119,22 @@
|
|||||||
type: Boolean || undefined,
|
type: Boolean || undefined,
|
||||||
default: undefined,
|
default: undefined,
|
||||||
},
|
},
|
||||||
|
minApprover: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
maxApprover: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
maxCirculate: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
minCirculate: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
// 自动同意规则
|
// 自动同意规则
|
||||||
@ -169,6 +213,21 @@
|
|||||||
function changeIsReadOnly(val: Boolean) {
|
function changeIsReadOnly(val: Boolean) {
|
||||||
emits('update:isReadOnly', val);
|
emits('update:isReadOnly', val);
|
||||||
}
|
}
|
||||||
|
function changeMaxCirculate(val: number) {
|
||||||
|
emits('update:maxCirculate', val);
|
||||||
|
}
|
||||||
|
//最少传阅人
|
||||||
|
function changeMinCirculate(val: number) {
|
||||||
|
emits('update:minCirculate', val);
|
||||||
|
}
|
||||||
|
// 最少审批人
|
||||||
|
function changeMinApprover(val: number) {
|
||||||
|
emits('update:minApprover', val);
|
||||||
|
}
|
||||||
|
// 最多审批人
|
||||||
|
function changeMaxApprover(val: number) {
|
||||||
|
emits('update:maxApprover', val);
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped></style>
|
<style lang="less" scoped></style>
|
||||||
|
|||||||
200
src/views/workflow/design/bpmn/components/ApproveUserRules.vue
Normal file
200
src/views/workflow/design/bpmn/components/ApproveUserRules.vue
Normal file
@ -0,0 +1,200 @@
|
|||||||
|
<template>
|
||||||
|
<FormItem :label="t('自动同意:')">
|
||||||
|
<a-tree-select
|
||||||
|
:value="props.autoAgreeRule"
|
||||||
|
style="width: 100%"
|
||||||
|
:tree-data="autoAgreeRuleOptions"
|
||||||
|
tree-checkable
|
||||||
|
allow-clear
|
||||||
|
:placeholder="t('请选择自动同意规则')"
|
||||||
|
@change="changeAutoAgreeRule"
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
<FormItem :label="t('无处理人:')">
|
||||||
|
<a-select
|
||||||
|
:value="props.noHandler"
|
||||||
|
style="width: 100%"
|
||||||
|
:options="noHandlerOptions"
|
||||||
|
@change="changeNoHandler"
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
<FormItem :label="t('指定审批人:')">
|
||||||
|
<a-select
|
||||||
|
:value="props.isPrevChooseNext"
|
||||||
|
style="width: 100%"
|
||||||
|
:options="designatedApproverOptions"
|
||||||
|
@change="changeDesignatedApprover"
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
<FormItem
|
||||||
|
:tip="
|
||||||
|
t(
|
||||||
|
'临时审批人是指由上一节点审批人指定下一节点审批人过程中,是否允许在审批人基础上添加组织架构人员。',
|
||||||
|
)
|
||||||
|
"
|
||||||
|
:label="t('临时审批人:')"
|
||||||
|
>
|
||||||
|
<a-switch :checked="props.provisionalApprover" @change="changeProvisionalApprover" />
|
||||||
|
</FormItem>
|
||||||
|
|
||||||
|
<!-- 多选 :是 / 否 -->
|
||||||
|
<FormItem :label="t('多选:')">
|
||||||
|
<a-switch :checked="props.isChooseMulti" @change="changeIsChooseMulti" />
|
||||||
|
</FormItem>
|
||||||
|
<FormItem :label="t('全选:')">
|
||||||
|
<a-switch :checked="props.isChooseAll" @change="changeIsChooseAll" />
|
||||||
|
</FormItem>
|
||||||
|
<FormItem :label="t('只读:')">
|
||||||
|
<a-switch :checked="props.isReadOnly" @change="changeIsReadOnly" />
|
||||||
|
</FormItem>
|
||||||
|
<FormItem :label="t('审批人最多:')" >
|
||||||
|
<a-input-number
|
||||||
|
v-model:value="maxApprover"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
@change="changeMaxApprover"
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
<FormItem :label="t('审批人最少:')">
|
||||||
|
<a-input-number
|
||||||
|
v-model:value="minApprover"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
@change="changeMinApprover"
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts" name="ProcessBasic">
|
||||||
|
import FormItem from '/@bpmn/layout/FormItem.vue';
|
||||||
|
import { AutoAgreeRule, DesignatedApprover, NoHandler } from '/@/enums/workflowEnum';
|
||||||
|
import { useI18n } from '/@/hooks/web/useI18n';
|
||||||
|
const { t } = useI18n();
|
||||||
|
const emits = defineEmits([
|
||||||
|
'update:autoAgreeRule',
|
||||||
|
'update:noHandler',
|
||||||
|
'update:isPrevChooseNext',
|
||||||
|
'update:provisionalApprover',
|
||||||
|
'update:isChooseMulti',
|
||||||
|
'update:isChooseAll',
|
||||||
|
'update:isReadOnly',
|
||||||
|
'update:minApprover',
|
||||||
|
'update:maxApprover',
|
||||||
|
]);
|
||||||
|
const props = defineProps({
|
||||||
|
autoAgreeRule: Array,
|
||||||
|
noHandler: Number || String || Boolean,
|
||||||
|
isPrevChooseNext: Number || String || Boolean,
|
||||||
|
isChooseMulti: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
isChooseAll: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
isReadOnly: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
provisionalApprover: {
|
||||||
|
type: Boolean || undefined,
|
||||||
|
default: undefined,
|
||||||
|
},
|
||||||
|
minApprover: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
maxApprover: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// 自动同意规则
|
||||||
|
const autoAgreeRuleOptions = [
|
||||||
|
{
|
||||||
|
value: AutoAgreeRule.ORIGINATOR,
|
||||||
|
label: t('候选审批人包含流程任务发起人'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: AutoAgreeRule.PREVIOUS_NODE,
|
||||||
|
label: t('候选审批人包含上一节点审批人'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: AutoAgreeRule.APPROVED,
|
||||||
|
label: t('候选审批人在此流程中审批过'),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
function changeAutoAgreeRule(val: Array<AutoAgreeRule>) {
|
||||||
|
let autoAgreeRule = val;
|
||||||
|
if (val.length > 0) {
|
||||||
|
// 选择了自动同意规则后,无处理人 只能由 超级管理员处理 且 指定审批人 只能 不指定审批人
|
||||||
|
emits('update:noHandler', NoHandler.ADMIN);
|
||||||
|
emits('update:isPrevChooseNext', DesignatedApprover.NOT_SPECIFIED);
|
||||||
|
}
|
||||||
|
emits('update:autoAgreeRule', autoAgreeRule);
|
||||||
|
}
|
||||||
|
// 无处理人
|
||||||
|
const noHandlerOptions = [
|
||||||
|
{
|
||||||
|
value: NoHandler.ADMIN,
|
||||||
|
label: t('由超级管理员处理'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: NoHandler.PREVIOUS_NODE,
|
||||||
|
label: t('由上一节点审批人指定审批人'),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
function changeNoHandler(val: NoHandler) {
|
||||||
|
emits('update:noHandler', val);
|
||||||
|
if (val == NoHandler.PREVIOUS_NODE) {
|
||||||
|
// 无处理人 选择了 由上一节点审批人指定审批人;那么自动同意规则必须为空
|
||||||
|
emits('update:autoAgreeRule', []);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 指定审批人
|
||||||
|
const designatedApproverOptions = [
|
||||||
|
{
|
||||||
|
value: DesignatedApprover.NOT_SPECIFIED,
|
||||||
|
label: t('不指定审批人'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: DesignatedApprover.PREVIOUS_NODE,
|
||||||
|
label: t('由上一节点审批人指定'),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
function changeDesignatedApprover(val: DesignatedApprover) {
|
||||||
|
emits('update:isPrevChooseNext', val);
|
||||||
|
if (val == DesignatedApprover.PREVIOUS_NODE) {
|
||||||
|
// 指定审批人 选择了 由上一节点审批人指定;那么自动同意规则必须为空
|
||||||
|
emits('update:autoAgreeRule', []);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 临时审批人
|
||||||
|
function changeProvisionalApprover(val: Boolean) {
|
||||||
|
emits('update:provisionalApprover', val);
|
||||||
|
}
|
||||||
|
// 多选
|
||||||
|
function changeIsChooseMulti(val: Boolean) {
|
||||||
|
emits('update:isChooseMulti', val);
|
||||||
|
}
|
||||||
|
// 全选
|
||||||
|
function changeIsChooseAll(val: Boolean) {
|
||||||
|
emits('update:isChooseAll', val);
|
||||||
|
}
|
||||||
|
// 只读
|
||||||
|
function changeIsReadOnly(val: Boolean) {
|
||||||
|
emits('update:isReadOnly', val);
|
||||||
|
}
|
||||||
|
// 最少审批人
|
||||||
|
function changeMinApprover(val: number) {
|
||||||
|
emits('update:minApprover', val);
|
||||||
|
}
|
||||||
|
// 最多审批人
|
||||||
|
function changeMaxApprover(val: number) {
|
||||||
|
emits('update:maxApprover', val);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped></style>
|
||||||
@ -0,0 +1,76 @@
|
|||||||
|
<template>
|
||||||
|
<FormItem
|
||||||
|
:tip="
|
||||||
|
t(
|
||||||
|
'临时传阅人是指由上一节点审批人指定下一节点传阅人过程中,是否允许在传阅人基础上添加组织架构人员。',
|
||||||
|
)
|
||||||
|
"
|
||||||
|
:label="t('临时传阅人:')"
|
||||||
|
>
|
||||||
|
<a-switch :checked="provisionalDistributor" @change="changeProvisionalDistributor" />
|
||||||
|
</FormItem>
|
||||||
|
<FormItem :label="t('传阅人最多:')">
|
||||||
|
<a-input-number
|
||||||
|
v-model:value="maxCirculate"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
@change="changeMaxCirculate"
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
<FormItem :label="t('传阅人最少:')">
|
||||||
|
<a-input-number
|
||||||
|
v-model:value="minCirculate"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
@change="changeMinCirculate"
|
||||||
|
/>
|
||||||
|
</FormItem>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts" name="ProcessBasic">
|
||||||
|
import FormItem from '/@bpmn/layout/FormItem.vue';
|
||||||
|
import { useI18n } from '/@/hooks/web/useI18n';
|
||||||
|
const { t } = useI18n();
|
||||||
|
const emits = defineEmits([
|
||||||
|
'update:provisionalDistributor',
|
||||||
|
'update:maxCirculate',
|
||||||
|
'update:minCirculate'
|
||||||
|
]);
|
||||||
|
const props = defineProps({
|
||||||
|
isChooseMulti: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
isChooseAll: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false,
|
||||||
|
},
|
||||||
|
provisionalDistributor: {
|
||||||
|
type: Boolean || undefined,
|
||||||
|
default: undefined,
|
||||||
|
},
|
||||||
|
maxCirculate: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
minCirculate: {
|
||||||
|
type: Number,
|
||||||
|
default: null,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// 临时传阅人
|
||||||
|
function changeProvisionalDistributor(val: Boolean) {
|
||||||
|
emits('update:provisionalDistributor', val);
|
||||||
|
}
|
||||||
|
//最多传阅人
|
||||||
|
function changeMaxCirculate(val: number) {
|
||||||
|
emits('update:maxCirculate', val);
|
||||||
|
}
|
||||||
|
//最少传阅人
|
||||||
|
function changeMinCirculate(val: number) {
|
||||||
|
emits('update:minCirculate', val);
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped></style>
|
||||||
@ -75,6 +75,10 @@ export const initProperties = (id: InfoId, type: InfoType, name: string, parentI
|
|||||||
properties.autoAgreeRule = processInfo.autoAgreeRule;
|
properties.autoAgreeRule = processInfo.autoAgreeRule;
|
||||||
properties.noHandler = processInfo.noHandler;
|
properties.noHandler = processInfo.noHandler;
|
||||||
properties.isPrevChooseNext = processInfo.isPrevChooseNext;
|
properties.isPrevChooseNext = processInfo.isPrevChooseNext;
|
||||||
|
properties.minApprover = processInfo.minApprover;
|
||||||
|
properties.maxApprover = processInfo.maxApprover;
|
||||||
|
properties.maxCirculate = processInfo.maxCirculate;
|
||||||
|
properties.minCirculate = processInfo.minCirculate;
|
||||||
}
|
}
|
||||||
if (id === 'Activity_draft') {
|
if (id === 'Activity_draft') {
|
||||||
// 将草稿节点的审批人设置为流程发起者
|
// 将草稿节点的审批人设置为流程发起者
|
||||||
|
|||||||
@ -46,6 +46,10 @@ export const processConfig: ProcessConfig = {
|
|||||||
nameRule: '', //命名规则
|
nameRule: '', //命名规则
|
||||||
nameRuleConfigs: [], // 命名规则列表
|
nameRuleConfigs: [], // 命名规则列表
|
||||||
autoAgreeRule: [], //自动同意规则
|
autoAgreeRule: [], //自动同意规则
|
||||||
|
minApprover: '', //最少审批人
|
||||||
|
maxApprover: '', //最多审批人
|
||||||
|
maxCirculate: '', //最多传阅人
|
||||||
|
minCirculate: '', //最少传阅人
|
||||||
isPrevChooseNext: DesignatedApprover.NOT_SPECIFIED, //是否上一节点审批人指定下一节点审批人
|
isPrevChooseNext: DesignatedApprover.NOT_SPECIFIED, //是否上一节点审批人指定下一节点审批人
|
||||||
noHandler: NoHandler.ADMIN, //无对应处理人
|
noHandler: NoHandler.ADMIN, //无对应处理人
|
||||||
appShow: false, //移动端是否显示
|
appShow: false, //移动端是否显示
|
||||||
@ -144,9 +148,14 @@ const UserProperties: UserTaskConfig = {
|
|||||||
autoAgreeRule: [], //自动同意规则
|
autoAgreeRule: [], //自动同意规则
|
||||||
isPrevChooseNext: DesignatedApprover.NOT_SPECIFIED, //是否上一节点审批人指定下一节点审批人
|
isPrevChooseNext: DesignatedApprover.NOT_SPECIFIED, //是否上一节点审批人指定下一节点审批人
|
||||||
provisionalApprover: false, //临时审批人
|
provisionalApprover: false, //临时审批人
|
||||||
|
provisionalDistributor: false, //临时传阅人
|
||||||
isChooseMulti: true, //是否多选
|
isChooseMulti: true, //是否多选
|
||||||
isChooseAll: false, //是否全选
|
isChooseAll: false, //是否全选
|
||||||
isReadOnly: false, //是否只读
|
isReadOnly: false, //是否只读
|
||||||
|
minApprover: '', //最少审批人
|
||||||
|
maxApprover: '', //最多审批人
|
||||||
|
maxCirculate: '', //最多传阅人
|
||||||
|
minCirculate: '', //最少传阅人
|
||||||
noHandler: NoHandler.ADMIN, //无对应处理人
|
noHandler: NoHandler.ADMIN, //无对应处理人
|
||||||
countersignConfig: {
|
countersignConfig: {
|
||||||
multipleInstancesType: MultipleInstancesType.NONE, //多实例类型
|
multipleInstancesType: MultipleInstancesType.NONE, //多实例类型
|
||||||
|
|||||||
@ -18,7 +18,7 @@
|
|||||||
</FormItem>
|
</FormItem>
|
||||||
</template>
|
</template>
|
||||||
<a-tab-pane key="2" :tab="t('审批人')">
|
<a-tab-pane key="2" :tab="t('审批人')">
|
||||||
<ApproveRules
|
<ApproveUserRules
|
||||||
v-model:autoAgreeRule="formInfo.autoAgreeRule"
|
v-model:autoAgreeRule="formInfo.autoAgreeRule"
|
||||||
v-model:noHandler="formInfo.noHandler"
|
v-model:noHandler="formInfo.noHandler"
|
||||||
v-model:isPrevChooseNext="formInfo.isPrevChooseNext"
|
v-model:isPrevChooseNext="formInfo.isPrevChooseNext"
|
||||||
@ -26,6 +26,8 @@
|
|||||||
v-model:isChooseMulti="formInfo.isChooseMulti"
|
v-model:isChooseMulti="formInfo.isChooseMulti"
|
||||||
v-model:isChooseAll="formInfo.isChooseAll"
|
v-model:isChooseAll="formInfo.isChooseAll"
|
||||||
v-model:isReadOnly="formInfo.isReadOnly"
|
v-model:isReadOnly="formInfo.isReadOnly"
|
||||||
|
v-model:minApprover="formInfo.minApprover"
|
||||||
|
v-model:maxApprover="formInfo.maxApprover"
|
||||||
/>
|
/>
|
||||||
<MemberTable
|
<MemberTable
|
||||||
v-model:memberList="formInfo.approverConfigs"
|
v-model:memberList="formInfo.approverConfigs"
|
||||||
@ -34,6 +36,11 @@
|
|||||||
/>
|
/>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="3" :tab="t('传阅人')">
|
<a-tab-pane key="3" :tab="t('传阅人')">
|
||||||
|
<MemberUserTable
|
||||||
|
v-model:provisionalDistributor="formInfo.provisionalDistributor"
|
||||||
|
v-model:maxCirculate="formInfo.maxCirculate"
|
||||||
|
v-model:minCirculate="formInfo.minCirculate"
|
||||||
|
/>
|
||||||
<MemberTable
|
<MemberTable
|
||||||
v-model:memberList="formInfo.circulateConfigs"
|
v-model:memberList="formInfo.circulateConfigs"
|
||||||
:is-common-type="false"
|
:is-common-type="false"
|
||||||
@ -56,7 +63,8 @@
|
|||||||
import NoticePolicyConfig from '/@bpmn/components/NoticePolicyConfig.vue';
|
import NoticePolicyConfig from '/@bpmn/components/NoticePolicyConfig.vue';
|
||||||
import SettingList from '/@bpmn/components/formSettings/SettingList.vue';
|
import SettingList from '/@bpmn/components/formSettings/SettingList.vue';
|
||||||
import MemberTable from '/@bpmn/components/member/MemberTable.vue';
|
import MemberTable from '/@bpmn/components/member/MemberTable.vue';
|
||||||
import ApproveRules from '/@bpmn/components/ApproveRules.vue';
|
import MemberUserTable from '/@bpmn/components/member/MemberUserTable.vue';
|
||||||
|
import ApproveUserRules from '/@bpmn/components/ApproveUserRules.vue';
|
||||||
import Countersign from './user/Countersign.vue';
|
import Countersign from './user/Countersign.vue';
|
||||||
import ButtonSetting from './user/ButtonSetting.vue';
|
import ButtonSetting from './user/ButtonSetting.vue';
|
||||||
import OpinionConfig from './user/OpinionConfig.vue';
|
import OpinionConfig from './user/OpinionConfig.vue';
|
||||||
|
|||||||
@ -28,6 +28,14 @@
|
|||||||
v-model:autoAgreeRule="processInfo.autoAgreeRule"
|
v-model:autoAgreeRule="processInfo.autoAgreeRule"
|
||||||
v-model:noHandler="processInfo.noHandler"
|
v-model:noHandler="processInfo.noHandler"
|
||||||
v-model:isPrevChooseNext="processInfo.isPrevChooseNext"
|
v-model:isPrevChooseNext="processInfo.isPrevChooseNext"
|
||||||
|
v-model:provisionalApprover="processInfo.provisionalApprover"
|
||||||
|
v-model:isChooseMulti="processInfo.isChooseMulti"
|
||||||
|
v-model:isChooseAll="processInfo.isChooseAll"
|
||||||
|
v-model:isReadOnly="processInfo.isReadOnly"
|
||||||
|
v-model:minApprover="processInfo.minApprover"
|
||||||
|
v-model:maxApprover="processInfo.maxApprover"
|
||||||
|
v-model:maxCirculate="processInfo.maxCirculate"
|
||||||
|
v-model:minCirculate="processInfo.minCirculate"
|
||||||
/>
|
/>
|
||||||
<FormItem :tip="t('配置默认表单后,用户任务节点均会包含该表单')" :label="t('默认表单:')">
|
<FormItem :tip="t('配置默认表单后,用户任务节点均会包含该表单')" :label="t('默认表单:')">
|
||||||
<SettingDefaultForm />
|
<SettingDefaultForm />
|
||||||
|
|||||||
@ -43,16 +43,32 @@
|
|||||||
const { t } = useI18n();
|
const { t } = useI18n();
|
||||||
const configColumns: BasicColumn[] = [
|
const configColumns: BasicColumn[] = [
|
||||||
{
|
{
|
||||||
title: t('流程名称'),
|
title: t('流程定义名称'),
|
||||||
dataIndex: 'schemaName',
|
dataIndex: 'schemaName',
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('发起者'),
|
title: t('任务名称'),
|
||||||
|
dataIndex: 'taskName',
|
||||||
|
align: 'left',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('流程待办名称'),
|
||||||
|
dataIndex: 'processName',
|
||||||
|
align: 'left',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('流程发起者'),
|
||||||
dataIndex: 'originator',
|
dataIndex: 'originator',
|
||||||
sorter: true,
|
sorter: true,
|
||||||
align: 'left',
|
align: 'left',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: t('创建人'),
|
||||||
|
dataIndex: 'createUserName',
|
||||||
|
sorter: true,
|
||||||
|
align: 'left',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: t('发起时间'),
|
title: t('发起时间'),
|
||||||
dataIndex: 'createDate',
|
dataIndex: 'createDate',
|
||||||
|
|||||||
@ -27,16 +27,32 @@ const { t } = useI18n();
|
|||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const configColumns = [
|
const configColumns = [
|
||||||
{
|
{
|
||||||
title: t('流程名称'),
|
title: t('流程定义名称'),
|
||||||
dataIndex: 'schemaName',
|
dataIndex: 'schemaName',
|
||||||
align: 'left'
|
align: 'left'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: t('发起者'),
|
title: t('任务名称'),
|
||||||
|
dataIndex: 'taskName',
|
||||||
|
align: 'left',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('流程待办名称'),
|
||||||
|
dataIndex: 'processName',
|
||||||
|
align: 'left',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: t('流程发起者'),
|
||||||
dataIndex: 'originator',
|
dataIndex: 'originator',
|
||||||
sorter: true,
|
sorter: true,
|
||||||
align: 'left'
|
align: 'left'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: t('创建人'),
|
||||||
|
dataIndex: 'createUserName',
|
||||||
|
sorter: true,
|
||||||
|
align: 'left',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: t('发起时间'),
|
title: t('发起时间'),
|
||||||
dataIndex: 'createDate',
|
dataIndex: 'createDate',
|
||||||
|
|||||||
Reference in New Issue
Block a user