自定义导入按钮功能

你好,我有个需求是导入execl文件,但是这个有很多其他逻辑,有根据字段修改原来的数据,根据一些数据在新增一条数据等逻辑,现在我是想增加一个自定义按钮,点击时弹出选择文件的页面,然后业务有自定义的导入接口实现。这个自定义按钮,点击时弹出选择文件的页面这一步怎么实现?有demo吗

评论区

超级管理员 2025-11-14 11:18

java的导入增强就可以实现了,不需要这么麻烦

yff 2025-11-14 11:34

@超级管理员

原来的那个新增的导入按钮,我要保留只做新增数据的功能,需要新增一个导入按钮,做其他导入业务,这个怎么实现比较简单?

超级管理员 2025-11-14 12:02

@yff

自定义控件然后通过js增强点击按钮弹出这个导入控件

yff 2025-11-14 14:32

@超级管理员

image.png

文件的控件名称怎么查看的或者控件现规定路径怎么找?

超级管理员 2025-11-14 14:38

自定义控件配置路径就可以了

控件放在components里面即可

image.png

src\components\IFrame\src\IFrame.vue

然后修改为

components/IFrame/src/IFrame.vue

yff 2025-11-14 15:39

其实我是不想重新写,想使用你那个公共的导入控件,可以直接使用吗,怎么使用?

yff 2025-11-14 17:42


//初始化控件

useFun.controlInit('FormView', 'formView_85622', {

  formId: '1980889665869148161', //表单设计id

  formType: 'edit', //表单类型 add | edit | view

  handleType: '', //处理类型 default | returnData

  showType: 'dialog', //弹窗类型 dialog | drawer

  showButton: true, //是否显示底部默认操作按钮

  dataOption: { //数据配置

    tableId: '', //表单开发id

    dataId: '' //数据id

  },

  defaultData: {}, //默认表单数据

  enhanceData: {}, //传递给表单js增强内部调用配置

  popOption: { //弹窗配置

    title: 'SN码出库', //标题

    width: '', //弹窗宽度

    fullscreen: false, //是否全屏

    footerBtn: [ //底部按钮配置

      {

        params: {}, //el-button 其他参数

        name: '测试按钮', //按钮名称

        display: false, //是否显示

        loading: true, //点击时是否有loading

        icon: '', //图标

        clickFun: (loading) => {

          //点击事件

          if (loading) loading() //关闭loading

        }

      }

    ],

    headerBtn: [], //顶部按钮配置(配置同上)

    dialogParams: {} //弹窗其他配置

  },

  beforeClose: (type, done, formData, loading) => {

    // type:关闭类型  submit:提交后触发  close:直接关闭弹窗触发

    // done:关闭弹窗方法 formData:表单数据  loading:关闭loading方法

    if (type == 'submit') {

      console.log('表单数据', formData)

      useFun.requestApi('post', '/jeelowcode/snmanage/outbound', {

        data: formData

      }).then(res => {

        message.success('出库成功')

      })

      useFun.resetChange()

    }

    done()

  }

});


//控件调用

const { formView_85622 } = Vue.toRefs(rendControlData.value)


const controlData = formView_85622.value.params //FormView的配置

// componentRef.value.formView_85622 FormView的Ref控件引用



//初始化控件

useFun.controlInit('ControlView', 'controlView_97890', {

  controlName: '', //控件名称(全局注册的控件使用,例:el-transfer )

  controlPath: 'components/LowDesign/src/LowTable/components/import/importData.vue', //控件相对路径(未全局注册的控件使用,例:components/IFrame/src/IFrame.vue)

  controlParams: {}, //控件配置

  showType: 'dialog', //弹窗类型 dialog | drawer

  popOption: { //弹窗配置

    title: '导入调货数据', //标题

    width: '', //弹窗宽度

    fullscreen: false, //是否全屏

    footerBtn: [ //底部按钮配置

      {

        params: {}, //el-button 其他参数

        name: '导入调货', //按钮名称

        display: true, //是否显示

        loading: true, //点击时是否有loading

        icon: '', //图标

        clickFun: (loading) => {

          //点击事件

          if (loading) loading() //关闭loading

        }

      }

    ],

    headerBtn: [], //顶部按钮配置(配置同上)

    dialogParams: {}, //弹窗其他配置

    handleClose: (done) => { //关闭弹窗前的回调

      done()

    }

  }

});


//控件调用

const { controlView_97890 } = Vue.toRefs(rendControlData.value)


const controlData = controlView_97890.value.params //ControlView的配置

// componentRef.value.controlView_97890 ControlView的Ref控件引用


还有个问题,支持多个控件吗,我使用两个控件就就没有反应

yff 2025-11-17 14:41

@超级管理员

帮忙看看,那个一个页面支持多个控件吗

回复