Browse Source

feat:发布前校验当前流程模型下是否存在正在审批中的单据信息

smallNorthLee 6 months ago
parent
commit
c039696288

+ 5 - 5
src/views/bpm/model/CategoryDraggableModel.vue

@@ -159,7 +159,7 @@
             <el-button
               link
               type="primary"
-              @click="openModelForm('update', scope.row.id, scope.row.processDefinition.id)"
+              @click="openModelForm('update', scope.row.id, scope.row.processDefinition?.id)"
               v-if="hasPermiUpdate"
               :disabled="!isManagerUser(scope.row)"
             >
@@ -448,7 +448,7 @@ const handleDeploy = async (row: any) => {
     // 发布的二次确认
     await message.confirm('是否发布该流程!!')
     //校验当前版本的流程下是否存在正在进行中的单据
-    const res = await ModelApi.getProcessInstance(row.processDefinition.id)
+    const res = await ModelApi.getProcessInstance(row.id)
     if (res) {
       message.error('当前版本下存在正在进行中的单据,请先结束单据后再发布')
       return
@@ -593,14 +593,14 @@ const handleDeleteCategory = async () => {
 
 /** 添加流程模型弹窗 */
 const tagsView = useTagsView()
-const openModelForm = async (type: string, id?: number, processDefinitionId?: string) => {
-  alert(processDefinitionId)
+const openModelForm = async (type: string, id?: number, processDefinitionId?: any) => {
   if (type === 'create') {
     await push({ name: 'BpmModelCreate' })
   } else {
+    const params = processDefinitionId ? { id, type, processDefinitionId } : { id, type }
     await push({
       name: 'BpmModelUpdate',
-      params: { id, type }
+      params: params
     })
     // 设置标题
     if (type === 'copy') {

+ 6 - 7
src/views/bpm/model/form/index.vue

@@ -179,6 +179,8 @@ const userList = ref<UserApi.UserVO[]>([])
 
 /** 初始化数据 */
 const initData = async () => {
+  console.log(route.params);
+  
   const modelId = route.params.id as string
   if (modelId) {
     // 修改场景
@@ -295,7 +297,7 @@ const handleSave = async () => {
         // 跳转到编辑页面
         await router.push({
           name: 'BpmModelUpdate',
-          params: { id: formData.value.id, processDefinitionId: formData.value.processDefinitionId }
+          params: { id: formData.value.id}
         })
       } catch {
         // 先删除当前页签
@@ -312,6 +314,8 @@ const handleSave = async () => {
 
 /** 发布操作 */
 const handleDeploy = async () => {
+  console.log(route.params);
+  
   try {
     // 修改场景下直接发布,新增场景下需要先确认
     if (!formData.value.id) {
@@ -319,7 +323,7 @@ const handleDeploy = async () => {
     }
 
     //校验当前版本的流程下是否存在正在进行中的单据
-    const res = await ModelApi.getProcessInstance(row.processDefinition.id)
+    const res = await ModelApi.getProcessInstance(formData.value.id)
     if (res) {
       message.error('当前版本下存在正在进行中的单据,请先结束单据后再发布')
       return
@@ -352,11 +356,6 @@ const handleDeploy = async () => {
   }
 }
 
-const validateProcessInstance = async (processDefinitionId) => {
-  const valid = await ModelApi.getProcessInstance(processDefinitionId)
-  console.log(valid)
-}
-
 /** 步骤切换处理 */
 const handleStepClick = async (index: number) => {
   try {

+ 32 - 3
src/views/bpm/processInstance/create/index.vue

@@ -58,7 +58,16 @@
                   >
                     <template #default>
                       <div class="flex">
-                        <el-image :src="definition.icon" class="w-32px h-32px" />
+                        <el-image
+                          v-if="definition.icon"
+                          :src="definition.icon"
+                          class="w-32px h-32px"
+                        />
+                        <div v-else class="flow-icon">
+                          <span style="font-size: 12px; color: #fff">{{
+                            sliceName(definition.name)
+                          }}</span>
+                        </div>
                         <el-text class="!ml-10px" size="large">{{ definition.name }}</el-text>
                       </div>
                     </template>
@@ -275,6 +284,14 @@ const availableCategories = computed(() => {
   )
 })
 
+// 处理显示的名称
+const sliceName = (name: string) => {
+  if (name.length > 2) {
+    return name.slice(0, 2)
+  }
+  return name
+}
+
 /** 初始化 */
 onMounted(() => {
   getList()
@@ -282,13 +299,25 @@ onMounted(() => {
 </script>
 
 <style lang="scss" scoped>
+.flow-icon {
+  display: flex;
+  width: 32px;
+  height: 32px;
+  margin-right: 10px;
+  background-color: var(--el-color-primary);
+  border-radius: 0.25rem;
+  align-items: center;
+  justify-content: center;
+}
+
 .process-definition-container::before {
-  content: '';
-  border-left: 1px solid #e6e6e6;
   position: absolute;
   left: 20.8%;
   height: 100%;
+  border-left: 1px solid #e6e6e6;
+  content: '';
 }
+
 :deep() {
   .definition-item-card {
     .el-card__body {