Bläddra i källkod

feat(web-admin): edit and submit OA drafts in-place via shared dialog.

Co-authored-by: Cursor <cursoragent@cursor.com>
zlwu 2 månader sedan
förälder
incheckning
3cf2f68b1a
1 ändrade filer med 31 tillägg och 12 borttagningar
  1. 31 12
      web-admin/src/views/oa-approval/drafts/index.vue

+ 31 - 12
web-admin/src/views/oa-approval/drafts/index.vue

@@ -59,11 +59,7 @@
           <div class="list-toolbar-selected">
             已选 <span class="sel-num">{{ selectedRows.length }}</span> 项
           </div>
-          <el-button
-            class="btn-ghost"
-            :disabled="!selectedRows.length"
-            @click="handleBatchDelete"
-          >
+          <el-button class="btn-ghost" :disabled="!selectedRows.length" @click="handleBatchDelete">
             <el-icon><Delete /></el-icon>
             批量删除
           </el-button>
@@ -159,6 +155,12 @@
         </div>
       </div>
     </section>
+
+    <OaStartFormDialog
+      ref="draftDialogRef"
+      @saved="onDraftDialogSaved"
+      @submitted="onDraftDialogSubmitted"
+    />
   </div>
 </template>
 
@@ -166,7 +168,7 @@
   import { onActivated, onMounted, reactive, ref } from 'vue'
   import { useRouter } from 'vue-router'
   import { Delete, Edit, Promotion, RefreshLeft, Search } from '@element-plus/icons-vue'
-  import { ElMessageBox } from 'element-plus'
+  import { ElMessage, ElMessageBox } from 'element-plus'
   import {
     fetchBatchDeleteOaInstanceDrafts,
     fetchDeleteOaInstanceDraft,
@@ -174,6 +176,7 @@
     fetchOaInstanceDraftList,
     fetchSubmitOaInstanceDraft
   } from '@/api/oaApproval'
+  import OaStartFormDialog from '@/components/oa-approval/OaStartFormDialog.vue'
   import { refreshOaMenuBadges } from '@/utils/oa-menu-badge'
 
   defineOptions({ name: 'OaApprovalDrafts' })
@@ -187,6 +190,7 @@
   const pageSize = ref(20)
   const total = ref(0)
   const submittingId = ref('')
+  const draftDialogRef = ref<InstanceType<typeof OaStartFormDialog> | null>(null)
 
   const searchForm = reactive({
     keyword: '',
@@ -243,12 +247,26 @@
     handleSearch()
   }
 
-  function openEdit(row: any) {
+  async function openEdit(row: any) {
     if (!row?.id) return
-    router.push({
-      path: '/system-manage/oa-approval/start',
-      query: { draftId: row.id }
-    })
+    try {
+      await draftDialogRef.value?.openForDraft(row.id)
+    } catch {
+      ElMessage.error('无法打开草稿')
+    }
+  }
+
+  function onDraftDialogSaved() {
+    void loadList()
+    void refreshOaMenuBadges()
+  }
+
+  function onDraftDialogSubmitted(data: any) {
+    void loadList()
+    void refreshOaMenuBadges()
+    if (data?.id) {
+      router.push({ path: `/system-manage/oa-approval/instances/${data.id}` })
+    }
   }
 
   async function handleSubmit(row: any) {
@@ -271,7 +289,8 @@
         router.push({ path: `/system-manage/oa-approval/instances/${data.id}` })
       }
     } catch {
-      openEdit(row)
+      // 快捷提交失败:打开同一弹窗回显,不跳发起页
+      await openEdit(row)
     } finally {
       submittingId.value = ''
     }