From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目
---
src/views/bpm/model/definition/index.vue | 174 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 174 insertions(+), 0 deletions(-)
diff --git a/src/views/bpm/model/definition/index.vue b/src/views/bpm/model/definition/index.vue
new file mode 100644
index 0000000..2b061f4
--- /dev/null
+++ b/src/views/bpm/model/definition/index.vue
@@ -0,0 +1,174 @@
+<template>
+ <doc-alert title="宸ヤ綔娴佹墜鍐�" url="https://doc.iocoder.cn/bpm/" />
+
+ <ContentWrap>
+ <el-table v-loading="loading" :data="list">
+ <el-table-column label="瀹氫箟缂栧彿" align="center" prop="id" min-width="250" />
+ <el-table-column label="娴佺▼鍚嶇О" align="center" prop="name" min-width="150" />
+ <el-table-column label="娴佺▼鍥炬爣" align="center" min-width="50">
+ <template #default="{ row }">
+ <el-image v-if="row.icon" :src="row.icon" class="h-24px w-24pxrounded" />
+ </template>
+ </el-table-column>
+ <el-table-column label="鍙鑼冨洿" prop="startUserIds" min-width="100">
+ <template #default="{ row }">
+ <el-text v-if="!row.startUsers?.length"> 鍏ㄩ儴鍙 </el-text>
+ <el-text v-else-if="row.startUsers.length === 1">
+ {{ row.startUsers[0].nickname }}
+ </el-text>
+ <el-text v-else>
+ <el-tooltip
+ class="box-item"
+ effect="dark"
+ placement="top"
+ :content="row.startUsers.map((user: any) => user.nickname).join('銆�')"
+ >
+ {{ row.startUsers[0].nickname }}绛� {{ row.startUsers.length }} 浜哄彲瑙�
+ </el-tooltip>
+ </el-text>
+ </template>
+ </el-table-column>
+ <el-table-column label="娴佺▼绫诲瀷" prop="modelType" min-width="120">
+ <template #default="{ row }">
+ <dict-tag :value="row.modelType" :type="DICT_TYPE.BPM_MODEL_TYPE" />
+ </template>
+ </el-table-column>
+ <el-table-column label="琛ㄥ崟淇℃伅" prop="formType" min-width="150">
+ <template #default="scope">
+ <el-button
+ v-if="scope.row.formType === BpmModelFormType.NORMAL"
+ type="primary"
+ link
+ @click="handleFormDetail(scope.row)"
+ >
+ <span>{{ scope.row.formName }}</span>
+ </el-button>
+ <el-button
+ v-else-if="scope.row.formType === BpmModelFormType.CUSTOM"
+ type="primary"
+ link
+ @click="handleFormDetail(scope.row)"
+ >
+ <span>{{ scope.row.formCustomCreatePath }}</span>
+ </el-button>
+ <label v-else>鏆傛棤琛ㄥ崟</label>
+ </template>
+ </el-table-column>
+ <el-table-column label="娴佺▼鐗堟湰" align="center" min-width="80">
+ <template #default="scope">
+ <el-tag>v{{ scope.row.version }}</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="閮ㄧ讲鏃堕棿"
+ align="center"
+ prop="deploymentTime"
+ width="180"
+ :formatter="dateFormatter"
+ />
+ <el-table-column label="鎿嶄綔" align="center">
+ <template #default="scope">
+ <el-button
+ link
+ type="primary"
+ @click="openModelForm(scope.row.id)"
+ v-hasPermi="['bpm:model:update']"
+ >
+ 鎭㈠
+ </el-button>
+ </template>
+ </el-table-column>
+ </el-table>
+ <!-- 鍒嗛〉 -->
+ <Pagination
+ :total="total"
+ v-model:page="queryParams.pageNo"
+ v-model:limit="queryParams.pageSize"
+ @pagination="getList"
+ />
+ </ContentWrap>
+
+ <!-- 寮圭獥锛氳〃鍗曡鎯� -->
+ <Dialog title="琛ㄥ崟璇︽儏" v-model="formDetailVisible" width="800">
+ <form-create :rule="formDetailPreview.rule" :option="formDetailPreview.option" />
+ </Dialog>
+</template>
+
+<script lang="ts" setup>
+import { dateFormatter } from '@/utils/formatTime'
+import * as DefinitionApi from '@/api/bpm/definition'
+import { setConfAndFields2 } from '@/utils/formCreate'
+import { DICT_TYPE } from '@/utils/dict'
+import { BpmModelFormType } from '@/utils/constants'
+
+defineOptions({ name: 'BpmProcessDefinition' })
+
+const { push } = useRouter() // 璺敱
+const { query } = useRoute() // 鏌ヨ鍙傛暟
+
+const loading = ref(true) // 鍒楄〃鐨勫姞杞戒腑
+const total = ref(0) // 鍒楄〃鐨勬�婚〉鏁�
+const list = ref([]) // 鍒楄〃鐨勬暟鎹�
+const queryParams = reactive({
+ pageNo: 1,
+ pageSize: 10,
+ key: query.key
+})
+
+/** 鏌ヨ鍒楄〃 */
+const getList = async () => {
+ loading.value = true
+ try {
+ const data = await DefinitionApi.getProcessDefinitionPage(queryParams)
+ list.value = data.list
+ total.value = data.total
+ } finally {
+ loading.value = false
+ }
+}
+
+/** 娴佺▼琛ㄥ崟鐨勮鎯呮寜閽搷浣� */
+const formDetailVisible = ref(false)
+const formDetailPreview = ref({
+ rule: [],
+ option: {}
+})
+const handleFormDetail = async (row: any) => {
+ if (row.formType == BpmModelFormType.NORMAL) {
+ // 璁剧疆琛ㄥ崟
+ setConfAndFields2(formDetailPreview, row.formConf, row.formFields)
+ // 寮圭獥鎵撳紑
+ formDetailVisible.value = true
+ } else {
+ await push({
+ path: row.formCustomCreatePath
+ })
+ }
+}
+
+/** 鎭㈠娴佺▼妯″瀷寮圭獥 */
+const openModelForm = async (id?: number) => {
+ await push({
+ name: 'BpmModelUpdate',
+ params: { id, type: 'definition' }
+ })
+}
+
+/** 鍒濆鍖� **/
+onMounted(() => {
+ getList()
+})
+</script>
+
+<style lang="scss" scoped>
+.flow-icon {
+ display: flex;
+ width: 38px;
+ height: 38px;
+ margin-right: 10px;
+ background-color: var(--el-color-primary);
+ border-radius: 0.25rem;
+ align-items: center;
+ justify-content: center;
+}
+</style>
--
Gitblit v1.8.0