Skip to content

Commit e83d591

Browse files
committed
Vue3 重构:流程模型的各种操作
1 parent 1854b85 commit e83d591

File tree

4 files changed

+322
-27
lines changed

4 files changed

+322
-27
lines changed

src/api/bpm/model/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export const updateModel = async (data: ModelVO) => {
3838
}
3939

4040
// 任务状态修改
41-
export const updateModelStateApi = async (id: number, state: number) => {
41+
export const updateModelState = async (id: number, state: number) => {
4242
const data = {
4343
id: id,
4444
state: state
@@ -50,10 +50,10 @@ export const createModel = async (data: ModelVO) => {
5050
return await request.post({ url: '/bpm/model/create', data: data })
5151
}
5252

53-
export const deleteModelApi = async (id: number) => {
53+
export const deleteModel = async (id: number) => {
5454
return await request.delete({ url: '/bpm/model/delete?id=' + id })
5555
}
5656

57-
export const deployModelApi = async (id: number) => {
57+
export const deployModel = async (id: number) => {
5858
return await request.post({ url: '/bpm/model/deploy?id=' + id })
5959
}

src/views/bpm/model/ModelForm.vue

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,12 @@
6767
</el-form-item>
6868
<el-form-item v-if="formData.formType === 10" label="流程表单" prop="formId">
6969
<el-select v-model="formData.formId" clearable style="width: 100%">
70-
<el-option v-for="form in forms" :key="form.id" :label="form.name" :value="form.id" />
70+
<el-option
71+
v-for="form in formList"
72+
:key="form.id"
73+
:label="form.name"
74+
:value="form.id"
75+
/>
7176
</el-select>
7277
</el-form-item>
7378
<el-form-item
@@ -120,7 +125,7 @@
120125
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
121126
import { ElMessageBox } from 'element-plus'
122127
import * as ModelApi from '@/api/bpm/model'
123-
128+
import * as FormApi from '@/api/bpm/form'
124129
const { t } = useI18n() // 国际化
125130
const message = useMessage() // 消息弹窗
126131
@@ -145,6 +150,7 @@ const formRules = reactive({
145150
visible: [{ required: true, message: '是否可见不能为空', trigger: 'blur' }]
146151
})
147152
const formRef = ref() // 表单 Ref
153+
const formList = ref([]) // 流程表单的下拉框的数据
148154
149155
/** 打开弹窗 */
150156
const open = async (type: string, id?: number) => {
@@ -161,6 +167,8 @@ const open = async (type: string, id?: number) => {
161167
formLoading.value = false
162168
}
163169
}
170+
// 获得流程表单的下拉框的数据
171+
formList.value = await FormApi.getSimpleFormList()
164172
}
165173
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
166174
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
<template>
2+
<ContentWrap>
3+
<!-- 列表 -->
4+
<XTable @register="registerTable">
5+
<template #toolbar_buttons>
6+
<!-- 操作:导入 -->
7+
<XButton
8+
type="warning"
9+
preIcon="ep:upload"
10+
:title="'导入流程'"
11+
@click="handleImport"
12+
style="margin-left: 10px"
13+
/>
14+
</template>
15+
</XTable>
16+
17+
<!-- 导入流程 -->
18+
<XModal v-model="importDialogVisible" width="400" title="导入流程">
19+
<div>
20+
<el-upload
21+
ref="uploadRef"
22+
:action="importUrl"
23+
:headers="uploadHeaders"
24+
:drag="true"
25+
:limit="1"
26+
:multiple="true"
27+
:show-file-list="true"
28+
:disabled="uploadDisabled"
29+
:on-exceed="handleExceed"
30+
:on-success="handleFileSuccess"
31+
:on-error="excelUploadError"
32+
:auto-upload="false"
33+
accept=".bpmn, .xml"
34+
name="bpmnFile"
35+
:data="importForm"
36+
>
37+
<Icon class="el-icon--upload" icon="ep:upload-filled" />
38+
<div class="el-upload__text"> 将文件拖到此处,或 <em>点击上传</em> </div>
39+
<template #tip>
40+
<div class="el-upload__tip" style="color: red">
41+
提示:仅允许导入“bpm”或“xml”格式文件!
42+
</div>
43+
<div>
44+
<el-form
45+
ref="importFormRef"
46+
:model="importForm"
47+
:rules="rules"
48+
label-width="120px"
49+
status-icon
50+
>
51+
<el-form-item label="流程标识" prop="key">
52+
<el-input
53+
v-model="importForm.key"
54+
placeholder="请输入流标标识"
55+
style="width: 250px"
56+
/>
57+
</el-form-item>
58+
<el-form-item label="流程名称" prop="name">
59+
<el-input v-model="importForm.name" placeholder="请输入流程名称" clearable />
60+
</el-form-item>
61+
<el-form-item label="流程描述" prop="description">
62+
<el-input type="textarea" v-model="importForm.description" clearable />
63+
</el-form-item>
64+
</el-form>
65+
</div>
66+
</template>
67+
</el-upload>
68+
</div>
69+
<template #footer>
70+
<!-- 按钮:保存 -->
71+
<XButton
72+
type="warning"
73+
preIcon="ep:upload-filled"
74+
:title="t('action.save')"
75+
@click="submitFileForm"
76+
/>
77+
<XButton title="取 消" @click="uploadClose" />
78+
</template>
79+
</XModal>
80+
81+
</ContentWrap>
82+
</template>
83+
84+
<script setup lang="ts">
85+
import { getAccessToken, getTenantId } from '@/utils/auth'
86+
87+
const { t } = useI18n() // 国际化
88+
const message = useMessage() // 消息弹窗
89+
const router = useRouter() // 路由
90+
91+
// ========== 导入流程 ==========
92+
const uploadRef = ref<UploadInstance>()
93+
let importUrl = import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL + '/bpm/model/import'
94+
const uploadHeaders = ref()
95+
const importDialogVisible = ref(false)
96+
const uploadDisabled = ref(false)
97+
const importFormRef = ref<FormInstance>()
98+
const importForm = ref({
99+
key: '',
100+
name: '',
101+
description: ''
102+
})
103+
104+
// 导入流程弹窗显示
105+
const handleImport = () => {
106+
importDialogVisible.value = true
107+
}
108+
// 文件数超出提示
109+
const handleExceed = (): void => {
110+
message.error('最多只能上传一个文件!')
111+
}
112+
// 上传错误提示
113+
const excelUploadError = (): void => {
114+
message.error('导入流程失败,请您重新上传!')
115+
}
116+
117+
// 提交文件上传
118+
const submitFileForm = () => {
119+
uploadHeaders.value = {
120+
Authorization: 'Bearer ' + getAccessToken(),
121+
'tenant-id': getTenantId()
122+
}
123+
uploadDisabled.value = true
124+
uploadRef.value!.submit()
125+
}
126+
// 文件上传成功
127+
const handleFileSuccess = async (response: any): Promise<void> => {
128+
if (response.code !== 0) {
129+
message.error(response.msg)
130+
return
131+
}
132+
// 重置表单
133+
uploadClose()
134+
// 提示,并刷新
135+
message.success('导入流程成功!请点击【设计流程】按钮,进行编辑保存后,才可以进行【发布流程】')
136+
await reload()
137+
}
138+
// 关闭文件上传
139+
const uploadClose = () => {
140+
// 关闭弹窗
141+
importDialogVisible.value = false
142+
// 重置上传状态和文件
143+
uploadDisabled.value = false
144+
uploadRef.value!.clearFiles()
145+
// 重置表单
146+
importForm.value = {
147+
key: '',
148+
name: '',
149+
description: ''
150+
}
151+
importFormRef.value?.resetFields()
152+
}
153+
</script>

0 commit comments

Comments
 (0)