Skip to content

Commit 8ff6362

Browse files
committedJan 24, 2025
feat: BPM-更多设置-摘要设置
1 parent 7043dea commit 8ff6362

File tree

5 files changed

+108
-30
lines changed

5 files changed

+108
-30
lines changed
 

‎src/views/bpm/model/form/ExtraSettings.vue

+68-21
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,12 @@
7575
</el-radio-group>
7676
</div>
7777
</el-form-item>
78-
<el-form-item v-if="modelData.customTitleSetting" class="mb-20px">
78+
<el-form-item v-if="modelData.titleSetting" class="mb-20px">
7979
<template #label>
8080
<el-text size="large" tag="b">标题设置</el-text>
8181
</template>
8282
<div class="flex flex-col">
83-
<el-radio-group v-model="modelData.customTitleSetting.enable">
83+
<el-radio-group v-model="modelData.titleSetting.enable">
8484
<div class="flex flex-col">
8585
<el-radio :value="false"
8686
>系统默认 <el-text type="info"> 展示流程名称 </el-text></el-radio
@@ -96,18 +96,50 @@
9696
</div>
9797
</el-radio-group>
9898
<el-mention
99-
v-if="modelData.customTitleSetting.enable"
100-
v-model="modelData.customTitleSetting.title"
99+
v-if="modelData.titleSetting.enable"
100+
v-model="modelData.titleSetting.title"
101101
type="textarea"
102102
prefix="{"
103103
split="}"
104104
whole
105-
:options="formFieldOptions"
106-
placeholder="请插入表单字段或输入文本"
105+
:options="formFieldOptions4Title"
106+
placeholder="请插入表单字段(输入 '{' 可以选择表单字段)或输入文本"
107107
class="w-600px!"
108108
/>
109109
</div>
110110
</el-form-item>
111+
<el-form-item
112+
v-if="modelData.summarySetting && modelData.formType === BpmModelFormType.NORMAL"
113+
class="mb-20px"
114+
>
115+
<template #label>
116+
<el-text size="large" tag="b">摘要设置</el-text>
117+
</template>
118+
<div class="flex flex-col">
119+
<el-radio-group v-model="modelData.summarySetting.enable">
120+
<div class="flex flex-col">
121+
<el-radio :value="false">
122+
系统默认 <el-text type="info"> 展示表单前 3 个字段 </el-text>
123+
</el-radio>
124+
<el-radio :value="true"> 自定义摘要 </el-radio>
125+
</div>
126+
</el-radio-group>
127+
<el-select
128+
class="w-500px!"
129+
v-if="modelData.summarySetting.enable"
130+
v-model="modelData.summarySetting.summary"
131+
multiple
132+
placeholder="请选择要展示的表单字段"
133+
>
134+
<el-option
135+
v-for="item in formFieldOptions4Summary"
136+
:key="item.value"
137+
:label="item.lable"
138+
:value="item.value"
139+
/>
140+
</el-select>
141+
</div>
142+
</el-form-item>
111143
</el-form>
112144
</template>
113145

@@ -174,21 +206,30 @@ const numberExample = computed(() => {
174206
})
175207
176208
/** 表单选项 */
177-
const formField = ref<Array<{ field: ProcessVariableEnum; title: string }>>([])
178-
const formFieldOptions = computed(() => {
209+
const formField = ref<Array<{ field: string; title: string }>>([])
210+
const formFieldOptions4Title = computed(() => {
211+
let cloneFormField = formField.value.map((item) => {
212+
return {
213+
label: item.title,
214+
value: item.field
215+
}
216+
})
179217
// 固定添加发起人 ID 字段
180-
formField.value.unshift({
181-
field: ProcessVariableEnum.PROCESS_DEFINITION_NAME,
182-
title: '流程名称'
218+
cloneFormField.unshift({
219+
label: ProcessVariableEnum.PROCESS_DEFINITION_NAME,
220+
value: '流程名称'
183221
})
184-
formField.value.unshift({
185-
field: ProcessVariableEnum.START_TIME,
186-
title: '发起时间'
222+
cloneFormField.unshift({
223+
label: ProcessVariableEnum.START_TIME,
224+
value: '发起时间'
187225
})
188-
formField.value.unshift({
189-
field: ProcessVariableEnum.START_USER_ID,
190-
title: '发起人'
226+
cloneFormField.unshift({
227+
label: ProcessVariableEnum.START_USER_ID,
228+
value: '发起人'
191229
})
230+
return cloneFormField
231+
})
232+
const formFieldOptions4Summary = computed(() => {
192233
return formField.value.map((item) => {
193234
return {
194235
label: item.title,
@@ -211,22 +252,28 @@ const initData = () => {
211252
if (!modelData.value.autoApprovalType) {
212253
modelData.value.autoApprovalType = BpmAutoApproveType.NONE
213254
}
214-
if (!modelData.value.customTitleSetting) {
215-
modelData.value.customTitleSetting = {
255+
if (!modelData.value.titleSetting) {
256+
modelData.value.titleSetting = {
216257
enable: false,
217258
title: ''
218259
}
219260
}
261+
if (!modelData.value.summarySetting) {
262+
modelData.value.summarySetting = {
263+
enable: false,
264+
summary: []
265+
}
266+
}
220267
}
221268
defineExpose({ initData })
222269
223270
/** 监听表单 ID 变化,加载表单数据 */
224271
watch(
225272
() => modelData.value.formId,
226273
async (newFormId) => {
227-
if (newFormId && modelData.value.formType === BpmModelFormType.CUSTOM) {
274+
if (newFormId && modelData.value.formType === BpmModelFormType.NORMAL) {
228275
const data = await FormApi.getForm(newFormId)
229-
const result: Array<{ field: ProcessVariableEnum; title: string }> = []
276+
const result: Array<{ field: string; title: string }> = []
230277
if (data.fields) {
231278
data.fields.forEach((fieldStr: string) => {
232279
parseFormFields(JSON.parse(fieldStr), result)

‎src/views/bpm/model/form/index.vue

+5-1
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,13 @@ const formData: any = ref({
155155
length: 5
156156
},
157157
autoApprovalType: BpmAutoApproveType.NONE,
158-
customTitleSetting: {
158+
titleSetting: {
159159
enable: false,
160160
title: ''
161+
},
162+
summarySetting: {
163+
enable: false,
164+
summary: []
161165
}
162166
})
163167

‎src/views/bpm/processInstance/index.vue

+9
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,15 @@
130130
<ContentWrap>
131131
<el-table v-loading="loading" :data="list">
132132
<el-table-column label="流程名称" align="center" prop="name" min-width="200px" fixed="left" />
133+
<el-table-column label="摘要" prop="summary" min-width="180" fixed="left">
134+
<template #default="scope">
135+
<div class="flex flex-col" v-if="scope.row.summary && scope.row.summary.length > 0">
136+
<div v-for="(item, index) in scope.row.summary" :key="index">
137+
<el-text type="info"> {{ item.key }} : {{ item.value }} </el-text>
138+
</div>
139+
</div>
140+
</template>
141+
</el-table-column>
133142
<el-table-column
134143
label="流程分类"
135144
align="center"

‎src/views/bpm/task/done/index.vue

+14-5
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
:value="dict.value"
6565
/>
6666
</el-select>
67-
</el-form-item>
67+
</el-form-item>
6868

6969
<!-- 高级筛选 -->
7070
<el-form-item :style="{ position: 'absolute', right: '0px' }">
@@ -77,9 +77,9 @@
7777
>
7878
<template #reference>
7979
<el-button @click="showPopover = !showPopover" >
80-
<Icon icon="ep:plus" class="mr-5px" />高级筛选
80+
<Icon icon="ep:plus" class="mr-5px" />高级筛选
8181
</el-button>
82-
82+
8383
</template>
8484
<el-form-item label="流程发起人" class="bold-label" label-position="top" prop="category">
8585
<el-select
@@ -95,7 +95,7 @@
9595
:value="category.code"
9696
/>
9797
</el-select>
98-
</el-form-item>
98+
</el-form-item>
9999
<el-form-item label="发起时间" class="bold-label" label-position="top" prop="createTime">
100100
<el-date-picker
101101
v-model="queryParams.createTime"
@@ -122,6 +122,15 @@
122122
<ContentWrap>
123123
<el-table v-loading="loading" :data="list">
124124
<el-table-column align="center" label="流程" prop="processInstance.name" width="180" />
125+
<el-table-column label="摘要" prop="summary" min-width="180">
126+
<template #default="scope">
127+
<div class="flex flex-col" v-if="scope.row.summary && scope.row.summary.length > 0">
128+
<div v-for="(item, index) in scope.row.summary" :key="index">
129+
<el-text type="info"> {{ item.key }} : {{ item.value }} </el-text>
130+
</div>
131+
</div>
132+
</template>
133+
</el-table-column>
125134
<el-table-column
126135
align="center"
127136
label="发起人"
@@ -195,7 +204,7 @@ const queryParams = reactive({
195204
pageNo: 1,
196205
pageSize: 10,
197206
name: '',
198-
category: undefined,
207+
category: undefined,
199208
status: undefined,
200209
createTime: []
201210
})

‎src/views/bpm/task/todo/index.vue

+12-3
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@
6060
>
6161
<template #reference>
6262
<el-button @click="showPopover = !showPopover" >
63-
<Icon icon="ep:plus" class="mr-5px" />高级筛选
63+
<Icon icon="ep:plus" class="mr-5px" />高级筛选
6464
</el-button>
65-
65+
6666
</template>
6767
<el-form-item label="流程发起人" class="bold-label" label-position="top" prop="category">
6868
<el-select
@@ -78,7 +78,7 @@
7878
:value="category.code"
7979
/>
8080
</el-select>
81-
</el-form-item>
81+
</el-form-item>
8282
<el-form-item label="发起时间" class="bold-label" label-position="top" prop="createTime">
8383
<el-date-picker
8484
v-model="queryParams.createTime"
@@ -105,6 +105,15 @@
105105
<ContentWrap>
106106
<el-table v-loading="loading" :data="list">
107107
<el-table-column align="center" label="流程" prop="processInstance.name" width="180" />
108+
<el-table-column label="摘要" prop="summary" min-width="180">
109+
<template #default="scope">
110+
<div class="flex flex-col" v-if="scope.row.summary && scope.row.summary.length > 0">
111+
<div v-for="(item, index) in scope.row.summary" :key="index">
112+
<el-text type="info"> {{ item.key }} : {{ item.value }} </el-text>
113+
</div>
114+
</div>
115+
</template>
116+
</el-table-column>
108117
<el-table-column
109118
align="center"
110119
label="发起人"

0 commit comments

Comments
 (0)