From 769fb543015f1a90d42882a0a9f0592efa45a10e Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期一, 01 六月 2026 19:33:30 +0800
Subject: [PATCH] Merge branch 'dev_NEW_pro' of http://114.132.189.42:9002/r/product-inventory-management into dev_NEW_pro

---
 src/views/officeProcessAutomation/ApproveManage/approve-shared/components/ApprovalInstanceSubmitDialog.vue |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 112 insertions(+), 0 deletions(-)

diff --git a/src/views/officeProcessAutomation/ApproveManage/approve-shared/components/ApprovalInstanceSubmitDialog.vue b/src/views/officeProcessAutomation/ApproveManage/approve-shared/components/ApprovalInstanceSubmitDialog.vue
new file mode 100644
index 0000000..53de9e1
--- /dev/null
+++ b/src/views/officeProcessAutomation/ApproveManage/approve-shared/components/ApprovalInstanceSubmitDialog.vue
@@ -0,0 +1,112 @@
+<!-- 涓庡鎵瑰垪琛ㄦ彁浜�/淇敼寮圭獥锛堢涓夋锛変竴鑷� -->
+<template>
+  <el-dialog
+    v-model="visible"
+    :title="title"
+    width="720px"
+    append-to-body
+    destroy-on-close
+    class="approve-submit-dialog"
+    @closed="emit('closed')"
+  >
+    <el-form ref="innerFormRef" :model="form" :rules="rules" label-width="120px">
+      <el-form-item v-if="isEdit" label="瀹℃壒绫诲瀷">
+        <span class="approve-type-cell" :style="approvalTypeStyle(activeTemplate?.approvalType)">
+          {{ activeTemplate?.label || form.templateName || "鈥�" }}
+        </span>
+      </el-form-item>
+      <slot name="before" :form="form" :fields="fields" />
+      <ApprovalTemplateFormSection
+        :active-template="activeTemplate"
+        :fields="fields"
+        :form-payload="form.formPayload"
+        v-model:flow-nodes="form.flowNodes"
+        v-model:attachments="form.storageBlobDTOs"
+        :template-attachments="form.templateAttachments"
+        :user-options="userOptions"
+        :show-template-name="!isEdit"
+        :allow-change-template="false"
+        :flow-attachments-only="flowAttachmentsOnly"
+        :flow-only="flowOnly"
+      />
+      <slot name="after" :form="form" :fields="fields" />
+    </el-form>
+    <template #footer>
+      <el-button type="primary" :loading="saving" @click="handleSubmitClick">
+        {{ isEdit ? "淇� 瀛�" : "鎻� 浜�" }}
+      </el-button>
+      <el-button @click="visible = false">鍙� 娑�</el-button>
+    </template>
+  </el-dialog>
+</template>
+
+<script setup>
+import { computed, ref, watch } from "vue";
+import { ElMessage } from "element-plus";
+import { approvalTypeStyle } from "../../approve-list/approveListConstants.js";
+import ApprovalTemplateFormSection from "./ApprovalTemplateFormSection.vue";
+
+const innerFormRef = ref(null);
+
+const props = defineProps({
+  modelValue: { type: Boolean, default: false },
+  title: { type: String, default: "" },
+  form: { type: Object, required: true },
+  rules: { type: Object, default: () => ({}) },
+  fields: { type: Array, default: () => [] },
+  activeTemplate: { type: Object, default: null },
+  userOptions: { type: Array, default: () => [] },
+  isEdit: { type: Boolean, default: false },
+  saving: { type: Boolean, default: false },
+  formRef: { type: Object, default: null },
+  /** 濉姤椤圭敱 before 鎻掓Ы鍗曠嫭娓叉煋鏃惰涓� true */
+  flowAttachmentsOnly: { type: Boolean, default: false },
+  flowOnly: { type: Boolean, default: false },
+});
+
+const emit = defineEmits(["update:modelValue", "submit", "closed"]);
+
+const visible = computed({
+  get: () => props.modelValue,
+  set: (v) => emit("update:modelValue", v),
+});
+
+watch(
+  innerFormRef,
+  (el) => {
+    if (props.formRef) props.formRef.value = el;
+  },
+  { flush: "post" }
+);
+
+watch(visible, (v) => {
+  if (!v && props.formRef) props.formRef.value = null;
+});
+
+async function handleSubmitClick() {
+  if (!innerFormRef.value) {
+    ElMessage.warning("琛ㄥ崟鏈氨缁紝璇风◢鍚庡啀璇�");
+    return;
+  }
+  try {
+    await innerFormRef.value.validate();
+  } catch {
+    ElMessage.warning("璇峰畬鍠勮〃鍗曞繀濉」鍚庡啀淇濆瓨");
+    return;
+  }
+  emit("submit");
+}
+</script>
+
+<style scoped>
+.approve-type-cell {
+  display: inline-block;
+  padding: 2px 10px;
+  border-radius: 4px;
+  font-size: 13px;
+  line-height: 1.5;
+}
+.approve-submit-dialog :deep(.el-dialog__body) {
+  padding-top: 12px;
+}
+</style>

--
Gitblit v1.9.3