From ab264123941cd3d345687af92aab2a9e04968960 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期三, 27 五月 2026 14:21:35 +0800
Subject: [PATCH] Merge branch 'dev_NEW_pro' into dev_宁夏_英泽防锈

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

diff --git a/src/views/officeProcessAutomation/ApproveManage/approve-shared/components/ApprovalTemplateFormSection.vue b/src/views/officeProcessAutomation/ApproveManage/approve-shared/components/ApprovalTemplateFormSection.vue
new file mode 100644
index 0000000..d6e7073
--- /dev/null
+++ b/src/views/officeProcessAutomation/ApproveManage/approve-shared/components/ApprovalTemplateFormSection.vue
@@ -0,0 +1,122 @@
+<!-- 妯℃澘缁戝畾琛ㄥ崟鍖猴細濉姤椤� + 瀹℃壒娴佺▼ + 闄勪欢锛堥』鎸傚湪澶栧眰 el-form 涓嬶級 -->
+<template>
+  <template v-if="activeTemplate">
+    <el-form-item
+      v-if="showTemplateName && !hideTemplateName && !flowAttachmentsOnly && !flowOnly"
+      label="瀹℃壒妯℃澘"
+    >
+      <span class="template-name">{{ activeTemplate.label }}</span>
+      <el-button v-if="allowChangeTemplate" type="primary" link class="ml12" @click="emit('change-template')">
+        鏇存崲妯℃澘
+      </el-button>
+    </el-form-item>
+
+    <FormPayloadFields
+      v-if="!hideFormFields && !flowAttachmentsOnly && !flowOnly"
+      :fields="fields"
+      :form-payload="formPayload"
+    />
+
+    <el-form-item label="瀹℃壒娴佺▼" required>
+      <TemplateFlowEditor
+        v-model="flowNodesModel"
+        :user-options="userOptions"
+        :readonly="!flowEditable"
+      />
+      <p class="section-tip">
+        {{
+          flowEditable
+            ? "娴佺▼涓庡鎵逛汉鐢辨ā鏉块缃紝鍙寜闇�寰皟鑺傜偣瀹℃壒浜恒��"
+            : "娴佺▼涓庡鎵逛汉鐢辨墍閫夋ā鏉垮浐瀹氾紝涓嶅彲淇敼銆�"
+        }}
+      </p>
+    </el-form-item>
+
+    <el-form-item v-if="!flowOnly && templateAttachments.length" label="妯℃澘鍙傝��">
+      <el-tag
+        v-for="(f, i) in templateAttachments"
+        :key="`tpl-${i}`"
+        class="attachment-tag"
+        type="info"
+        effect="plain"
+      >
+        {{ attachmentDisplayName(f) }}
+      </el-tag>
+      <p class="section-tip">浠ヤ笂涓烘ā鏉块檮甯︽枃浠讹紝浠呬緵鍙傝�冿紱鎻愪氦闄勪欢璇峰湪涓嬫柟涓婁紶銆�</p>
+    </el-form-item>
+
+    <el-form-item v-if="!flowOnly" label="闄勪欢">
+      <FileUpload
+        v-model:file-list="attachmentsModel"
+        :limit="uploadLimit"
+        button-text="鐐瑰嚮閫夋嫨鏂囦欢"
+      />
+      <p class="section-tip">閫夊~锛屽彲涓婁紶涓庣敵璇风浉鍏崇殑璇存槑鏉愭枡銆�</p>
+    </el-form-item>
+  </template>
+  <el-empty v-else description="璇峰厛閫夋嫨瀹℃壒妯℃澘" :image-size="64" />
+</template>
+
+<script setup>
+import { computed } from "vue";
+import FileUpload from "@/components/AttachmentUpload/file/index.vue";
+import TemplateFlowEditor from "../../approve-template/components/TemplateFlowEditor.vue";
+import FormPayloadFields from "../../approve-list/components/FormPayloadFields.vue";
+import { attachmentDisplayName } from "../approvalTemplateBindingUtils.js";
+
+const props = defineProps({
+  activeTemplate: { type: Object, default: null },
+  fields: { type: Array, default: () => [] },
+  formPayload: { type: Object, required: true },
+  flowNodes: { type: Array, default: () => [] },
+  /** 鐢ㄦ埛鑷涓婁紶鐨勯檮浠� */
+  attachments: { type: Array, default: () => [] },
+  /** 妯℃澘棰勭疆闄勪欢锛堝彧璇诲睍绀猴級 */
+  templateAttachments: { type: Array, default: () => [] },
+  userOptions: { type: Array, default: () => [] },
+  showTemplateName: { type: Boolean, default: true },
+  allowChangeTemplate: { type: Boolean, default: true },
+  /** 涓� true 鏃朵笉灞曠ず妯℃澘鑷畾涔夊~鎶ラ」锛堜粎淇濈暀瀹℃壒娴佺▼涓庨檮浠讹級 */
+  hideFormFields: { type: Boolean, default: false },
+  /** 涓� true 鏃朵笉灞曠ず瀹℃壒妯℃澘鍚嶇О琛岋紙鐢辩埗绾х疆椤跺睍绀猴級 */
+  hideTemplateName: { type: Boolean, default: false },
+  /** 涓� true 鏃朵粎灞曠ず瀹℃壒娴佺▼涓庨檮浠讹紙濉姤椤圭敱鐖剁骇鍗曠嫭娓叉煋锛� */
+  flowAttachmentsOnly: { type: Boolean, default: false },
+  /** 涓� true 鏃朵粎灞曠ず瀹℃壒娴佺▼锛堜笉灞曠ず妯℃澘濉姤椤广�侀檮浠剁瓑锛� */
+  flowOnly: { type: Boolean, default: false },
+  uploadLimit: { type: Number, default: 10 },
+  /** 涓� true 鏃跺彲缂栬緫妯℃澘棰勭疆鐨勫鎵逛汉锛堜粎瀹℃壒妯℃澘绠$悊椤典娇鐢級 */
+  flowEditable: { type: Boolean, default: false },
+});
+
+const emit = defineEmits(["update:flowNodes", "update:attachments", "change-template"]);
+
+const flowNodesModel = computed({
+  get: () => props.flowNodes,
+  set: (v) => emit("update:flowNodes", v),
+});
+
+const attachmentsModel = computed({
+  get: () => props.attachments,
+  set: (v) => emit("update:attachments", v),
+});
+</script>
+
+<style scoped>
+.template-name {
+  font-weight: 600;
+  color: var(--el-text-color-primary);
+}
+.ml12 {
+  margin-left: 12px;
+}
+.section-tip {
+  font-size: 12px;
+  color: var(--el-text-color-secondary);
+  margin: 8px 0 0;
+  line-height: 1.5;
+}
+.attachment-tag {
+  margin: 0 8px 8px 0;
+}
+</style>

--
Gitblit v1.9.3