Jelajahi Sumber

可编辑区域设置

xzc 14 jam lalu
induk
melakukan
706c0f5dfd

+ 13 - 2
yudao-ui-admin-vue3/src/components/SsjsonReportViewer/index.vue

@@ -15,6 +15,7 @@ import '@synboy/spreadjs-custom-render/dist/style.css'
 import { getStandardTemplateInfo } from '@/api/pressure2/standard/template'
 import { ExcelApi } from '@/api/pressure2/excel'
 import { DynamicTbValApi } from '@/api/pressure2/dynamictbval'
+import { DynamicTbColApi } from '@/api/pressure2/dynamictbcol'
 import { serializeDataSourceForStorage } from '@/utils/reportUtil'
 import { buildFileUrl } from '@/utils'
 import axios from 'axios'
@@ -353,12 +354,21 @@ const loadByRefId = async (
     // 4.2 解析命名样式字符串引用,保留完整样式
     resolveNamedStyleRefs(config)
 
-    // 5. 传给预览组件(formData 提供数据,config 提供模板结构 + bindingPath)
+    // 5. 获取可编辑字段列表
+    let editFieldsList: string[] | null = null
+    try {
+      editFieldsList = await DynamicTbColApi.getEditDynamicTbColByTbId(refId)
+    } catch (e) {
+      console.warn('获取可编辑字段失败,将使用默认行为:', e)
+    }
+
+    // 6. 传给预览组件(formData 提供数据,config 提供模板结构 + bindingPath)
     previewRef.value?.register({
       config,
       formData,
       showToolbar: options.showToolbar ?? true,
-      readonly: options.readonly ?? false
+      readonly: options.readonly ?? false,
+      editFields: editFieldsList
     })
   } catch (error) {
     console.error('加载 ssjson (refId) 失败:', error)
@@ -437,6 +447,7 @@ defineExpose({
   setFormData,
   clearFormData,
   getUploadFields,
+  setEditFields: (fields: string[] | null) => previewRef.value?.setEditFields?.(fields),
   // 原始 register 仍保留,供高级用法使用
   register: (options: Parameters<InstanceType<typeof OptimizedTemplatePreview>['register']>[0]) =>
     previewRef.value?.register(options)