董国庆
2025-06-26 dae39dea7e2874ebe2f17438949255ce8331ecef
laboratory/src/components/DynamicComponent/index.vue
@@ -63,8 +63,8 @@
            <el-button size="small" icon="el-icon-upload2">点击上传</el-button>
          </el-upload>
          <div v-else>
            <div v-for="file in item.data.fileList" :key="file.uid" class="file-list-item">
              {{ file.name }}
            <div v-for="file in item.data.fileList" :key="file.uid" class="file-list-item" >
              <span style="color: #409EFF; cursor: pointer;" @click="downloadFileByUrl(file.url, file.name)">{{ file.name }}</span>
            </div>
          </div>
        </div>
@@ -116,6 +116,7 @@
import addTableData from "./addTableData.vue";
import apiConfig from '../../utils/baseurl'
import { getFullUrl } from '@/utils/utils'
import { downloadFileByUrl } from '@/utils/utils'
export default {
  name: "DynamicComponent",
@@ -195,9 +196,15 @@
                break;
              case 'fileUpload':
                componentData = { fileList: component.data };
                console.log('component.data component.data',component.data)
                break;
              case 'imageUpload':
                componentData = { imageList: component.data };
                componentData = { imageList: component.data.map(item=>{
                  return {
                    ...item,
                    url: getFullUrl(item.url),
                  }
                }) };
                break;
            }
            return {
@@ -214,6 +221,8 @@
    }
  },
  methods: {
    getFullUrl,
    downloadFileByUrl,
    getUserDisplayText(fieldName, rowData) {
      // 检查是否有对应的userInfo数据
      const userInfoKey = `${fieldName}_userInfo`;
@@ -299,6 +308,7 @@
            break;
          case 'fileUpload':
            componentData = component.data.fileList.map(file => {
              console.log('fileUpload fileUpload fileUpload',file)
              if (file.url && file.url.startsWith(prefix)) {
                return { ...file, url: file.url.substring(prefix.length) };
              }
@@ -332,8 +342,6 @@
      const processedData = { ...formData };
      // 调试输出
      console.log('添加/编辑行数据:', processedData, 'isEdit', isEdit);
      if (isEdit) {
        // Vue无法检测到对象或数组深层属性的变化,使用Vue.set来确保响应式
        this.$set(
@@ -351,7 +359,6 @@
          updateTime: new Date().toLocaleString()
        });
      }
      console.log('this.components', this.components);
      // 手动触发组件更新
      this.$forceUpdate();
@@ -505,7 +512,6 @@
      const updatedComponents = JSON.parse(JSON.stringify(this.components));
      this.$emit('update:dataSource', updatedComponents);
    },
    getFullUrl,
  },
  computed: {
  },