2025-01-19 16:43:30 +08:00
|
|
|
|
<template>
|
|
|
|
|
<el-form ref="formRef" :model="modelData" label-width="120px" class="mt-20px">
|
|
|
|
|
<el-form-item class="mb-20px">
|
|
|
|
|
<template #label>
|
|
|
|
|
<el-text size="large" tag="b">提交人权限</el-text>
|
|
|
|
|
</template>
|
2025-01-20 11:02:20 +08:00
|
|
|
|
<div class="flex flex-col">
|
|
|
|
|
<el-checkbox v-model="modelData.allowCancelRunningProcess" label="允许撤销审批中的申请" />
|
|
|
|
|
<div class="ml-22px">
|
|
|
|
|
<el-text type="info"> 第一个审批节点通过后,提交人仍可撤销申请 </el-text>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item v-if="modelData.processIdRule" class="mb-20px">
|
|
|
|
|
<template #label>
|
|
|
|
|
<el-text size="large" tag="b">流程编码</el-text>
|
|
|
|
|
</template>
|
|
|
|
|
<div class="flex flex-col">
|
|
|
|
|
<div>
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="modelData.processIdRule.prefix"
|
|
|
|
|
class="w-130px!"
|
|
|
|
|
placeholder="前缀"
|
|
|
|
|
:disabled="!modelData.processIdRule.enable"
|
|
|
|
|
>
|
|
|
|
|
<template #prepend>
|
|
|
|
|
<el-checkbox v-model="modelData.processIdRule.enable" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-input>
|
|
|
|
|
<el-select
|
|
|
|
|
v-model="modelData.processIdRule.infix"
|
|
|
|
|
class="w-130px! ml-5px"
|
|
|
|
|
placeholder="中缀"
|
|
|
|
|
:disabled="!modelData.processIdRule.enable"
|
|
|
|
|
>
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="item in timeOptions"
|
|
|
|
|
:key="item.value"
|
|
|
|
|
:label="item.label"
|
|
|
|
|
:value="item.value"
|
|
|
|
|
/>
|
|
|
|
|
</el-select>
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="modelData.processIdRule.postfix"
|
|
|
|
|
class="w-80px! ml-5px"
|
|
|
|
|
placeholder="后缀"
|
|
|
|
|
:disabled="!modelData.processIdRule.enable"
|
|
|
|
|
/>
|
|
|
|
|
<el-input-number
|
|
|
|
|
v-model="modelData.processIdRule.length"
|
|
|
|
|
class="w-120px! ml-5px"
|
|
|
|
|
:min="5"
|
|
|
|
|
:disabled="!modelData.processIdRule.enable"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="ml-22px" v-if="modelData.processIdRule.enable">
|
|
|
|
|
<el-text type="info"> 编码示例:{{ numberExample }} </el-text>
|
|
|
|
|
</div>
|
2025-01-19 16:43:30 +08:00
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
2025-01-21 08:25:09 +08:00
|
|
|
|
<el-form-item class="mb-20px">
|
|
|
|
|
<template #label>
|
|
|
|
|
<el-text size="large" tag="b">自动去重</el-text>
|
|
|
|
|
</template>
|
|
|
|
|
<div class="flex flex-col">
|
|
|
|
|
<div>
|
|
|
|
|
<el-text> 同一审批人在流程中重复出现时: </el-text>
|
|
|
|
|
</div>
|
|
|
|
|
<el-radio-group v-model="modelData.autoApprovalType">
|
|
|
|
|
<div class="flex flex-col">
|
|
|
|
|
<el-radio :value="1">不自动通过</el-radio>
|
|
|
|
|
<el-radio :value="2">仅审批一次,后续重复的审批节点均自动通过</el-radio>
|
|
|
|
|
<el-radio :value="3">仅针对连续审批的节点自动通过</el-radio>
|
|
|
|
|
</div>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
2025-01-19 16:43:30 +08:00
|
|
|
|
</el-form>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup lang="ts">
|
2025-01-20 11:02:20 +08:00
|
|
|
|
import dayjs from 'dayjs'
|
2025-01-21 08:25:09 +08:00
|
|
|
|
import { BpmAutoApproveType } from '@/utils/constants'
|
2025-01-20 11:02:20 +08:00
|
|
|
|
|
2025-01-19 16:43:30 +08:00
|
|
|
|
const modelData = defineModel<any>()
|
2025-01-20 11:02:20 +08:00
|
|
|
|
|
|
|
|
|
const timeOptions = ref([
|
|
|
|
|
{
|
2025-01-20 12:40:59 +08:00
|
|
|
|
value: 'NULL', // TODO @lesan:用 '' 会好会更好一点哈。
|
2025-01-20 11:02:20 +08:00
|
|
|
|
label: '无'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
value: 'DAY',
|
|
|
|
|
label: '精确到日'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
value: 'HOUR',
|
|
|
|
|
label: '精确到时'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
value: 'MINUTE',
|
|
|
|
|
label: '精确到分'
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
value: 'SECOND',
|
|
|
|
|
label: '精确到秒'
|
|
|
|
|
}
|
|
|
|
|
])
|
|
|
|
|
|
|
|
|
|
const numberExample = computed(() => {
|
|
|
|
|
if (modelData.value.processIdRule.enable) {
|
|
|
|
|
let infix = ''
|
|
|
|
|
switch (modelData.value.processIdRule.infix) {
|
|
|
|
|
case 'DAY':
|
|
|
|
|
infix = dayjs().format('YYYYMMDD')
|
|
|
|
|
break
|
|
|
|
|
case 'HOUR':
|
|
|
|
|
infix = dayjs().format('YYYYMMDDHH')
|
|
|
|
|
break
|
|
|
|
|
case 'MINUTE':
|
|
|
|
|
infix = dayjs().format('YYYYMMDDHHmm')
|
|
|
|
|
break
|
|
|
|
|
case 'SECOND':
|
|
|
|
|
infix = dayjs().format('YYYYMMDDHHmmss')
|
|
|
|
|
break
|
|
|
|
|
default:
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
return (
|
|
|
|
|
modelData.value.processIdRule.prefix +
|
|
|
|
|
infix +
|
|
|
|
|
modelData.value.processIdRule.postfix +
|
|
|
|
|
'1'.padStart(modelData.value.processIdRule.length - 1, '0')
|
|
|
|
|
)
|
|
|
|
|
} else {
|
|
|
|
|
return ''
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
2025-01-20 12:33:28 +08:00
|
|
|
|
/** 兼容以前未配置更多设置的流程 */
|
2025-01-20 11:02:20 +08:00
|
|
|
|
const initData = () => {
|
|
|
|
|
if (!modelData.value.processIdRule) {
|
|
|
|
|
modelData.value.processIdRule = {
|
|
|
|
|
enable: false,
|
|
|
|
|
prefix: '',
|
|
|
|
|
infix: '',
|
|
|
|
|
postfix: '',
|
|
|
|
|
length: 5
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-01-21 08:25:09 +08:00
|
|
|
|
if (!modelData.value.autoApprovalType) {
|
|
|
|
|
modelData.value.autoApprovalType = BpmAutoApproveType.NONE
|
|
|
|
|
}
|
2025-01-20 11:02:20 +08:00
|
|
|
|
}
|
|
|
|
|
defineExpose({ initData })
|
2025-01-19 16:43:30 +08:00
|
|
|
|
</script>
|