diff --git a/src/api/approval/instance/index.ts b/src/api/approval/instance/index.ts index ac73f01..6d378b8 100644 --- a/src/api/approval/instance/index.ts +++ b/src/api/approval/instance/index.ts @@ -52,6 +52,19 @@ export async function saveDocument(flowCode: string, data: Record) return Promise.reject(new Error(res.data.message)); } +/** + * 只建空草稿,返回实例id。上传附件前需要实例,但不校验表单字段。 + */ +export async function createEmptyDraft(flowCode: string) { + const res = await request.post>( + THINK_API_URL + '/approval/instance/' + flowCode + '/draft' + ); + if (res.data.code === 0) { + return res.data.data as number; + } + return Promise.reject(new Error(res.data.message)); +} + /** * 提交或重提 */ diff --git a/src/packageApproval/pages/form-completion.vue b/src/packageApproval/pages/form-completion.vue index 26ed216..3f93402 100644 --- a/src/packageApproval/pages/form-completion.vue +++ b/src/packageApproval/pages/form-completion.vue @@ -101,6 +101,7 @@ import { computed, reactive, ref } from 'vue'; import { onLoad } from '@dcloudio/uni-app'; import { useUserStore } from '@/store/modules/user'; import { + createEmptyDraft, getInstance, saveCompletion, submitInstance @@ -224,6 +225,24 @@ async function ensureDraft(): Promise { } } +/** + * 上传附件只需要实例 id:不校验表单,未建实例时先建空草稿 + */ +async function ensureInstance(): Promise { + if (instanceId.value) { + return instanceId.value; + } + try { + const id = await createEmptyDraft('completion'); + instanceId.value = id; + mode.value = 'edit'; + return id; + } catch (error: any) { + showError(error?.message || '创建草稿失败', null); + return 0; + } +} + async function saveDraft() { const id = await ensureDraft(); if (!id) { @@ -330,7 +349,7 @@ async function uploadFiles(files: Array<{ path: string; name?: string; size?: nu if (!files.length) { return; } - const id = await ensureDraft(); + const id = await ensureInstance(); if (!id) { return; } diff --git a/src/packageApproval/pages/form-coordination.vue b/src/packageApproval/pages/form-coordination.vue index 7d31d6b..3b2a916 100644 --- a/src/packageApproval/pages/form-coordination.vue +++ b/src/packageApproval/pages/form-coordination.vue @@ -112,6 +112,7 @@ import { computed, reactive, ref } from 'vue'; import { onLoad } from '@dcloudio/uni-app'; import { useUserStore } from '@/store/modules/user'; import { + createEmptyDraft, getInstance, saveCoordination, saveDocument, @@ -296,6 +297,24 @@ async function ensureDraft(): Promise { } } +/** + * 上传附件只需要实例 id:不校验表单,未建实例时先建空草稿 + */ +async function ensureInstance(): Promise { + if (instanceId.value) { + return instanceId.value; + } + try { + const id = await createEmptyDraft(flowCode.value); + instanceId.value = id; + mode.value = 'edit'; + return id; + } catch (error: any) { + showError(error?.message || '创建草稿失败', null); + return 0; + } +} + async function saveDraft() { const id = await ensureDraft(); if (!id) { @@ -402,7 +421,7 @@ async function uploadFiles(files: Array<{ path: string; name?: string; size?: nu if (!files.length) { return; } - const id = await ensureDraft(); + const id = await ensureInstance(); if (!id) { return; } diff --git a/src/packageApproval/pages/form-coupon.vue b/src/packageApproval/pages/form-coupon.vue index 4484615..ba6c510 100644 --- a/src/packageApproval/pages/form-coupon.vue +++ b/src/packageApproval/pages/form-coupon.vue @@ -121,7 +121,12 @@ import { computed, reactive, ref } from 'vue'; import { onLoad } from '@dcloudio/uni-app'; import { useUserStore } from '@/store/modules/user'; -import { getInstance, saveDocument, submitInstance } from '@/api/approval/instance'; +import { + createEmptyDraft, + getInstance, + saveDocument, + submitInstance +} from '@/api/approval/instance'; import { deleteAttachment, uploadAttachment } from '@/api/approval/attachment'; import type { ApprovalAttachment } from '@/api/approval/model'; import { showError, showSuccess } from '@/utils/app'; @@ -308,6 +313,24 @@ async function ensureDraft(): Promise { } } +/** + * 上传附件只需要实例 id:不校验表单,未建实例时先建空草稿 + */ +async function ensureInstance(): Promise { + if (instanceId.value) { + return instanceId.value; + } + try { + const id = await createEmptyDraft(FLOW_CODE); + instanceId.value = id; + mode.value = 'edit'; + return id; + } catch (error: any) { + showError(error?.message || '创建草稿失败', null); + return 0; + } +} + async function saveDraft() { const id = await ensureDraft(); if (!id) { @@ -414,7 +437,7 @@ async function uploadFiles(files: Array<{ path: string; name?: string; size?: nu if (!files.length) { return; } - const id = await ensureDraft(); + const id = await ensureInstance(); if (!id) { return; } diff --git a/src/packageApproval/pages/form-facility.vue b/src/packageApproval/pages/form-facility.vue index cdb302e..3985fb0 100644 --- a/src/packageApproval/pages/form-facility.vue +++ b/src/packageApproval/pages/form-facility.vue @@ -164,7 +164,12 @@ import { computed, reactive, ref } from 'vue'; import { onLoad } from '@dcloudio/uni-app'; import Decimal from 'decimal.js'; import { useUserStore } from '@/store/modules/user'; -import { getInstance, saveDocument, submitInstance } from '@/api/approval/instance'; +import { + createEmptyDraft, + getInstance, + saveDocument, + submitInstance +} from '@/api/approval/instance'; import { deleteAttachment, uploadAttachment } from '@/api/approval/attachment'; import type { ApprovalAttachment } from '@/api/approval/model'; import { showError, showSuccess } from '@/utils/app'; @@ -383,6 +388,24 @@ async function ensureDraft(): Promise { } } +/** + * 上传附件只需要实例 id:不校验表单,未建实例时先建空草稿 + */ +async function ensureInstance(): Promise { + if (instanceId.value) { + return instanceId.value; + } + try { + const id = await createEmptyDraft(FLOW_CODE); + instanceId.value = id; + mode.value = 'edit'; + return id; + } catch (error: any) { + showError(error?.message || '创建草稿失败', null); + return 0; + } +} + async function saveDraft() { const id = await ensureDraft(); if (!id) { @@ -489,7 +512,7 @@ async function uploadFiles(files: Array<{ path: string; name?: string; size?: nu if (!files.length) { return; } - const id = await ensureDraft(); + const id = await ensureInstance(); if (!id) { return; } diff --git a/src/packageApproval/pages/form-receipt.vue b/src/packageApproval/pages/form-receipt.vue index 19679ba..73c3359 100644 --- a/src/packageApproval/pages/form-receipt.vue +++ b/src/packageApproval/pages/form-receipt.vue @@ -111,7 +111,12 @@ import { computed, reactive, ref } from 'vue'; import { onLoad } from '@dcloudio/uni-app'; import { useUserStore } from '@/store/modules/user'; -import { getInstance, saveDocument, submitInstance } from '@/api/approval/instance'; +import { + createEmptyDraft, + getInstance, + saveDocument, + submitInstance +} from '@/api/approval/instance'; import { deleteAttachment, uploadAttachment } from '@/api/approval/attachment'; import type { ApprovalAttachment } from '@/api/approval/model'; import { showError, showSuccess } from '@/utils/app'; @@ -234,6 +239,24 @@ async function ensureDraft(): Promise { } } +/** + * 上传附件只需要实例 id:不校验表单,未建实例时先建空草稿 + */ +async function ensureInstance(): Promise { + if (instanceId.value) { + return instanceId.value; + } + try { + const id = await createEmptyDraft(FLOW_CODE); + instanceId.value = id; + mode.value = 'edit'; + return id; + } catch (error: any) { + showError(error?.message || '创建草稿失败', null); + return 0; + } +} + async function saveDraft() { const id = await ensureDraft(); if (!id) { @@ -340,7 +363,7 @@ async function uploadFiles(files: Array<{ path: string; name?: string; size?: nu if (!files.length) { return; } - const id = await ensureDraft(); + const id = await ensureInstance(); if (!id) { return; } diff --git a/src/packageApproval/pages/form-settlement.vue b/src/packageApproval/pages/form-settlement.vue index e4dabe0..13f424e 100644 --- a/src/packageApproval/pages/form-settlement.vue +++ b/src/packageApproval/pages/form-settlement.vue @@ -195,7 +195,12 @@ import { computed, reactive, ref } from 'vue'; import { onLoad } from '@dcloudio/uni-app'; import Decimal from 'decimal.js'; import { useUserStore } from '@/store/modules/user'; -import { getInstance, saveDocument, submitInstance } from '@/api/approval/instance'; +import { + createEmptyDraft, + getInstance, + saveDocument, + submitInstance +} from '@/api/approval/instance'; import { deleteAttachment, uploadAttachment } from '@/api/approval/attachment'; import type { ApprovalAttachment } from '@/api/approval/model'; import { showError, showSuccess } from '@/utils/app'; @@ -429,6 +434,24 @@ async function ensureDraft(): Promise { } } +/** + * 上传附件只需要实例 id:不校验表单,未建实例时先建空草稿 + */ +async function ensureInstance(): Promise { + if (instanceId.value) { + return instanceId.value; + } + try { + const id = await createEmptyDraft(FLOW_CODE); + instanceId.value = id; + mode.value = 'edit'; + return id; + } catch (error: any) { + showError(error?.message || '创建草稿失败', null); + return 0; + } +} + async function saveDraft() { const id = await ensureDraft(); if (!id) { @@ -535,7 +558,7 @@ async function uploadFiles(files: Array<{ path: string; name?: string; size?: nu if (!files.length) { return; } - const id = await ensureDraft(); + const id = await ensureInstance(); if (!id) { return; } diff --git a/src/packageApproval/pages/form-vehicle.vue b/src/packageApproval/pages/form-vehicle.vue index a459ca1..0c34a7a 100644 --- a/src/packageApproval/pages/form-vehicle.vue +++ b/src/packageApproval/pages/form-vehicle.vue @@ -186,7 +186,12 @@ import { computed, ref } from 'vue'; import { onLoad } from '@dcloudio/uni-app'; import { useUserStore } from '@/store/modules/user'; -import { getInstance, saveDocument, submitInstance } from '@/api/approval/instance'; +import { + createEmptyDraft, + getInstance, + saveDocument, + submitInstance +} from '@/api/approval/instance'; import { deleteAttachment, uploadAttachment } from '@/api/approval/attachment'; import type { ApprovalAttachment } from '@/api/approval/model'; import { showError, showSuccess } from '@/utils/app'; @@ -411,6 +416,24 @@ async function ensureDraft(): Promise { } } +/** + * 上传附件只需要实例 id:不校验表单,未建实例时先建空草稿 + */ +async function ensureInstance(): Promise { + if (instanceId.value) { + return instanceId.value; + } + try { + const id = await createEmptyDraft(FLOW_CODE); + instanceId.value = id; + mode.value = 'edit'; + return id; + } catch (error: any) { + showError(error?.message || '创建草稿失败', null); + return 0; + } +} + async function saveDraft() { const id = await ensureDraft(); if (!id) { @@ -517,7 +540,7 @@ async function uploadFiles(files: Array<{ path: string; name?: string; size?: nu if (!files.length) { return; } - const id = await ensureDraft(); + const id = await ensureInstance(); if (!id) { return; } diff --git a/src/packageApproval/pages/form-venue.vue b/src/packageApproval/pages/form-venue.vue index 488eb22..7e4ac8e 100644 --- a/src/packageApproval/pages/form-venue.vue +++ b/src/packageApproval/pages/form-venue.vue @@ -147,7 +147,12 @@ import { computed, reactive, ref } from 'vue'; import { onLoad } from '@dcloudio/uni-app'; import { useUserStore } from '@/store/modules/user'; -import { getInstance, saveDocument, submitInstance } from '@/api/approval/instance'; +import { + createEmptyDraft, + getInstance, + saveDocument, + submitInstance +} from '@/api/approval/instance'; import { deleteAttachment, uploadAttachment } from '@/api/approval/attachment'; import { listThinkSite } from '@/api/think/thinkSite'; import type { ApprovalAttachment } from '@/api/approval/model'; @@ -379,6 +384,24 @@ async function ensureDraft(): Promise { } } +/** + * 上传附件只需要实例 id:不校验表单,未建实例时先建空草稿 + */ +async function ensureInstance(): Promise { + if (instanceId.value) { + return instanceId.value; + } + try { + const id = await createEmptyDraft(FLOW_CODE); + instanceId.value = id; + mode.value = 'edit'; + return id; + } catch (error: any) { + showError(error?.message || '创建草稿失败', null); + return 0; + } +} + async function saveDraft() { const id = await ensureDraft(); if (!id) { @@ -485,7 +508,7 @@ async function uploadFiles(files: Array<{ path: string; name?: string; size?: nu if (!files.length) { return; } - const id = await ensureDraft(); + const id = await ensureInstance(); if (!id) { return; }