Skip to content

Commit 5e38633

Browse files
committed
【代码评审】Bpm:新的编辑界面
1 parent c083a0c commit 5e38633

File tree

5 files changed

+68
-69
lines changed

5 files changed

+68
-69
lines changed

src/router/modules/remaining.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -332,8 +332,8 @@ const remainingRouter: AppRouteRecordRaw[] = [
332332
}
333333
},
334334
{
335-
path: 'manager/model/create-update',
336-
component: () => import('@/views/bpm/model/CreateUpdate.vue'),
335+
path: 'manager/model/create-update', // TODO @goldenzqqq:是不是拆分成两个,一个 create 创建流程;一个 update 修改流程?
336+
component: () => import('@/views/bpm/model/CreateUpdate.vue'), // TODO @goldenzqqq:是不是放到 '@/views/bpm/model/form/index.vue'。然后,原本的 editor/index.vue 是不是可以清理了呀?
337337
name: 'BpmModelCreateUpdate',
338338
meta: {
339339
noCache: true,

src/views/bpm/model/CategoryDraggableModel.vue

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -339,21 +339,7 @@ const handleChangeState = async (row: any) => {
339339
340340
/** 设计流程 */
341341
const handleDesign = (row: any) => {
342-
// if (row.type == BpmModelType.BPMN) {
343-
// push({
344-
// name: 'BpmModelEditor',
345-
// query: {
346-
// modelId: row.id
347-
// }
348-
// })
349-
// } else {
350-
// push({
351-
// name: 'SimpleModelDesign',
352-
// query: {
353-
// modelId: row.id
354-
// }
355-
// })
356-
// }
342+
// TODO @goldenzqqq:最好使用 name 哈
357343
push(`/bpm/manager/model/create-update?id=${row.id}`)
358344
}
359345
@@ -497,6 +483,7 @@ const handleDeleteCategory = async () => {
497483
/** 添加流程模型弹窗 */
498484
const modelFormRef = ref()
499485
const openModelForm = (type: string, id?: number) => {
486+
// TODO @goldenzqqq:最好使用 name 哈
500487
if (type === 'create') {
501488
push('/bpm/manager/model/create-update')
502489
} else {

src/views/bpm/model/CreateUpdate.vue

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@
5050
<!-- 主体内容 -->
5151
<ContentWrap class="mt-50px">
5252
<!-- 第一步:基本信息 -->
53+
<!-- TODO @goldenzqqq:是不是可以居中哈,1024 -->
54+
<!-- TODO @goldenzqqq:有必要,把第一步、第二步,拆成独立的 vue 组件哇?主要是,把相关的 html、还有 js 逻辑,可以挪进去,让主的 index.vue 更精简一点 -->
5355
<div v-show="currentStep === 0">
5456
<el-form
5557
ref="formRef"
@@ -200,6 +202,7 @@
200202

201203
<div v-if="currentStep === 1">
202204
<!-- 第二步:表单设计 -->
205+
<!-- TODO @goldenzqqq:是不是可以居中哈,1024 -->
203206
<el-form
204207
ref="formRef"
205208
:model="formData"
@@ -316,9 +319,7 @@ const router = useRouter()
316319
const route = useRoute()
317320
const userStore = useUserStoreWithOut()
318321
319-
// 步骤控制
320-
const currentStep = ref(0)
321-
// 表单数据
322+
const currentStep = ref(0) // 步骤控制
322323
const formRef = ref()
323324
const formData: any = ref({
324325
id: undefined,
@@ -337,9 +338,7 @@ const formData: any = ref({
337338
managerUserType: undefined,
338339
startUserIds: [],
339340
managerUserIds: []
340-
})
341-
342-
// 表单校验规则
341+
}) // 表单数据
343342
const formRules = {
344343
name: [{ required: true, message: '流程名称不能为空', trigger: 'blur' }],
345344
key: [{ required: true, message: '流程标识不能为空', trigger: 'blur' }],
@@ -352,7 +351,7 @@ const formRules = {
352351
formCustomViewPath: [{ required: true, message: '表单查看地址不能为空', trigger: 'blur' }],
353352
visible: [{ required: true, message: '是否可见不能为空', trigger: 'blur' }],
354353
managerUserIds: [{ required: true, message: '流程管理员不能为空', trigger: 'blur' }]
355-
}
354+
} // 表单校验规则
356355
357356
// 流程设计器相关
358357
const xmlString = ref(undefined)
@@ -368,19 +367,19 @@ const selectedManagerUsers = ref<UserVO[]>([])
368367
const userSelectFormRef = ref()
369368
const currentSelectType = ref<'start' | 'manager'>('start')
370369
371-
// 打开发起人选择
370+
/** 打开发起人选择 */
372371
const openStartUserSelect = () => {
373372
currentSelectType.value = 'start'
374373
userSelectFormRef.value.open(0, selectedStartUsers.value)
375374
}
376375
377-
// 打开管理员选择
376+
/** 打开管理员选择 */
378377
const openManagerUserSelect = () => {
379378
currentSelectType.value = 'manager'
380379
userSelectFormRef.value.open(0, selectedManagerUsers.value)
381380
}
382381
383-
// 处理用户选择确认
382+
/** 处理用户选择确认 */
384383
const handleUserSelectConfirm = (_, users: UserVO[]) => {
385384
if (currentSelectType.value === 'start') {
386385
selectedStartUsers.value = users
@@ -391,35 +390,37 @@ const handleUserSelectConfirm = (_, users: UserVO[]) => {
391390
}
392391
}
393392
394-
// 处理发起人类型变化
393+
/** 处理发起人类型变化 */
395394
const handleStartUserTypeChange = (value: number) => {
396395
if (value !== 1) {
397396
selectedStartUsers.value = []
398397
formData.value.startUserIds = []
399398
}
400399
}
401400
402-
// 处理管理员类型变化
401+
/** 处理管理员类型变化 */
403402
const handleManagerUserTypeChange = (value: number) => {
404403
if (value !== 1) {
405404
selectedManagerUsers.value = []
406405
formData.value.managerUserIds = []
407406
}
408407
}
409408
410-
// 移除发起人
409+
/** 移除发起人 */
411410
const handleRemoveStartUser = (user: UserVO) => {
412411
selectedStartUsers.value = selectedStartUsers.value.filter((u) => u.id !== user.id)
413-
formData.value.startUserIds = formData.value.startUserIds.filter((id) => id !== user.id)
412+
formData.value.startUserIds = formData.value.startUserIds.filter((id: number) => id !== user.id)
414413
}
415414
416-
// 移除管理员
415+
/** 移除管理员 */
417416
const handleRemoveManagerUser = (user: UserVO) => {
418417
selectedManagerUsers.value = selectedManagerUsers.value.filter((u) => u.id !== user.id)
419-
formData.value.managerUserIds = formData.value.managerUserIds.filter((id) => id !== user.id)
418+
formData.value.managerUserIds = formData.value.managerUserIds.filter(
419+
(id: number) => id !== user.id
420+
)
420421
}
421422
422-
// 保存操作
423+
/** 保存操作 */
423424
const handleSave = async () => {
424425
try {
425426
if (formData.value.id) {
@@ -436,7 +437,7 @@ const handleSave = async () => {
436437
}
437438
}
438439
439-
// 发布操作
440+
/** 发布操作 */
440441
const handleDeploy = async () => {
441442
try {
442443
await message.confirm('是否确认发布该流程?')
@@ -445,7 +446,8 @@ const handleDeploy = async () => {
445446
await handleSave()
446447
await ModelApi.deployModel(formData.value.id)
447448
message.success('发布成功')
448-
router.push({ path: '/bpm/manager/model' })
449+
// TODO @goldenzqqq:最好使用 name 哈
450+
await router.push({ path: '/bpm/manager/model' })
449451
} catch (error) {
450452
if (error instanceof Error) {
451453
// 校验失败时,跳转到对应步骤
@@ -465,7 +467,7 @@ const handleDeploy = async () => {
465467
}
466468
}
467469
468-
// 初始化数据
470+
/** 初始化数据 */
469471
const initData = async () => {
470472
const modelId = route.query.id as unknown as string
471473
if (modelId) {
@@ -497,16 +499,12 @@ const initData = async () => {
497499
userList.value = await UserApi.getSimpleUserList()
498500
}
499501
500-
onMounted(async () => {
501-
await initData()
502-
})
503-
504-
// 第一步校验
502+
/** 第一步校验 */
505503
const validateStep1 = async () => {
506504
await formRef.value?.validate(['name', 'key', 'category', 'icon', 'type', 'visible'])
507505
}
508506
509-
// 第二步校验
507+
/** 第二步校验 */
510508
const validateStep2 = async () => {
511509
await formRef.value?.validate([
512510
'formType',
@@ -516,13 +514,14 @@ const validateStep2 = async () => {
516514
])
517515
}
518516
519-
// 第三步校验
517+
/** 第三步校验 */
520518
const validateStep3 = async () => {
521519
if (!xmlString.value) {
522520
throw new Error('请设计流程')
523521
}
524522
}
525523
524+
/** 校验全部 */
526525
const validateAllSteps = async () => {
527526
for (const step of steps) {
528527
if (step.validator) {
@@ -531,13 +530,14 @@ const validateAllSteps = async () => {
531530
}
532531
}
533532
533+
// TODO @goldenzqqq:是不是可以把 step1、step2、step3,改成 basic、form、designer。这样,可读性会好点。
534534
const steps = [
535535
{ title: '基本信息', validator: validateStep1 },
536536
{ title: '表单设计', validator: validateStep2 },
537537
{ title: '流程设计', validator: validateStep3 }
538538
]
539539
540-
// 处理设计器保存成功
540+
/** 处理设计器保存成功 */
541541
const handleDesignSuccess = (bpmnXml?: string) => {
542542
if (bpmnXml) {
543543
// 新建时,保存设计器生成的XML
@@ -546,7 +546,7 @@ const handleDesignSuccess = (bpmnXml?: string) => {
546546
message.success('保存成功')
547547
}
548548
549-
// 步骤切换处理
549+
/** 步骤切换处理 */
550550
const handleStepClick = async (index: number) => {
551551
// 如果是切换到第三步(流程设计),需要校验key和name
552552
if (index === 2) {
@@ -555,11 +555,12 @@ const handleStepClick = async (index: number) => {
555555
return
556556
}
557557
}
558+
// TODO @goldenzqqq:感觉这里可以优化下,切换的时候,必须当前表单填写正确,不然不允许切换。
558559
559560
currentStep.value = index
560561
}
561562
562-
// 添加一个计算属性来判断是否显示设计器
563+
/** 添加一个计算属性来判断是否显示设计器 */
563564
const showDesigner = computed(() => {
564565
return (
565566
currentStep.value === 2 &&
@@ -585,6 +586,11 @@ onBeforeUnmount(() => {
585586
w.bpmnInstances = null
586587
}
587588
})
589+
590+
/** 初始化 */
591+
onMounted(async () => {
592+
await initData()
593+
})
588594
</script>
589595

590596
<style lang="scss" scoped>

src/views/bpm/model/ModelForm.vue

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -201,11 +201,12 @@ import { DICT_TYPE, getBoolDictOptions, getIntDictOptions } from '@/utils/dict'
201201
import { ElMessageBox } from 'element-plus'
202202
import * as ModelApi from '@/api/bpm/model'
203203
import * as FormApi from '@/api/bpm/form'
204-
import { CategoryApi } from '@/api/bpm/category'
204+
import { CategoryApi, CategoryVO } from '@/api/bpm/category'
205205
import { BpmModelFormType, BpmModelType } from '@/utils/constants'
206206
import { UserVO } from '@/api/system/user'
207207
import * as UserApi from '@/api/system/user'
208208
import { useUserStoreWithOut } from '@/store/modules/user'
209+
import { FormVO } from '@/api/bpm/form'
209210
210211
defineOptions({ name: 'ModelForm' })
211212
@@ -251,12 +252,12 @@ const formRules = reactive({
251252
managerUserIds: [{ required: true, message: '流程管理员不能为空', trigger: 'blur' }]
252253
})
253254
const formRef = ref() // 表单 Ref
254-
const formList = ref([]) // 流程表单的下拉框的数据
255-
const categoryList = ref([]) // 流程分类列表
255+
const formList = ref<FormVO[]>([]) // 流程表单的下拉框的数据
256+
const categoryList = ref<CategoryVO[]>([]) // 流程分类列表
256257
const userList = ref<UserVO[]>([]) // 用户列表
257258
const selectedStartUsers = ref<UserVO[]>([]) // 已选择的发起人列表
258259
const selectedManagerUsers = ref<UserVO[]>([]) // 已选择的管理员列表
259-
const userSelectFormRef = ref() // 用户选择弹窗ref
260+
const userSelectFormRef = ref() // 用户选择弹窗 ref
260261
const currentSelectType = ref<'start' | 'manager'>('start') // 当前选择的是发起人还是管理员
261262
262263
/** 打开弹窗 */
@@ -363,35 +364,35 @@ const resetForm = () => {
363364
selectedManagerUsers.value = []
364365
}
365366
366-
// 处理发起人类型变化
367+
/** 处理发起人类型变化 */
367368
const handleStartUserTypeChange = (value: number) => {
368369
if (value !== 1) {
369370
selectedStartUsers.value = []
370371
formData.value.startUserIds = []
371372
}
372373
}
373374
374-
// 处理管理员类型变化
375+
/** 处理管理员类型变化 */
375376
const handleManagerUserTypeChange = (value: number) => {
376377
if (value !== 1) {
377378
selectedManagerUsers.value = []
378379
formData.value.managerUserIds = []
379380
}
380381
}
381382
382-
// 打开发起人选择
383+
/** 打开发起人选择 */
383384
const openStartUserSelect = () => {
384385
currentSelectType.value = 'start'
385386
userSelectFormRef.value.open(0, selectedStartUsers.value)
386387
}
387388
388-
// 打开管理员选择
389+
/** 打开管理员选择 */
389390
const openManagerUserSelect = () => {
390391
currentSelectType.value = 'manager'
391392
userSelectFormRef.value.open(0, selectedManagerUsers.value)
392393
}
393394
394-
// 处理用户选择确认
395+
/** 处理用户选择确认 */
395396
const handleUserSelectConfirm = (_, users: UserVO[]) => {
396397
if (currentSelectType.value === 'start') {
397398
selectedStartUsers.value = users
@@ -402,16 +403,18 @@ const handleUserSelectConfirm = (_, users: UserVO[]) => {
402403
}
403404
}
404405
405-
// 移除发起人
406+
/** 移除发起人 */
406407
const handleRemoveStartUser = (user: UserVO) => {
407408
selectedStartUsers.value = selectedStartUsers.value.filter((u) => u.id !== user.id)
408-
formData.value.startUserIds = formData.value.startUserIds.filter((id) => id !== user.id)
409+
formData.value.startUserIds = formData.value.startUserIds.filter((id: number) => id !== user.id)
409410
}
410411
411-
// 移除管理员
412+
/** 移除管理员 */
412413
const handleRemoveManagerUser = (user: UserVO) => {
413414
selectedManagerUsers.value = selectedManagerUsers.value.filter((u) => u.id !== user.id)
414-
formData.value.managerUserIds = formData.value.managerUserIds.filter((id) => id !== user.id)
415+
formData.value.managerUserIds = formData.value.managerUserIds.filter(
416+
(id: number) => id !== user.id
417+
)
415418
}
416419
</script>
417420

0 commit comments

Comments
 (0)