前端react+Ant Design 给穿梭框Transfer 添加导入导出按钮,难点在于导入数据后怎么赋值给右侧

本文介绍了如何在基于React和Ant Design的前端应用中为穿梭框(Transfer)添加导入导出功能。难点在于导入数据后如何将数据正确绑定到右侧。通过使用Ant Design图标组件和后端接口,实现了导出所有数据以及导入数据后自动显示在右侧的功能。此外,还展示了相关代码实现,包括导入和导出的逻辑处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

收到需求是:在穿梭框上加导出导入按钮,导出全部数据,导入数据后,在右侧穿梭框出现数据。难点在于导入数据后,怎么绑值,让数据出现在右侧框。减少用户对数据的勾选。这样用户可以在导出的表格中操作,在导入到穿梭框中。穿梭框 Transfer - Ant Design网址。

前端:

1.先添加按钮,上代码。

import 'moment/locale/zh-cn'

import { Button, Col, DatePicker, Form, Modal, notification, Row, Select } from 'antd'

import axios from 'axios'

import { assign } from 'lodash'

import InputFileDb from 'modules/relative/rqrj/InputFileDb'

import moment from 'moment'

import { useState } from 'react'

import { useMutation, useQueryClient } from 'react-query'

import { DownloadOutlined, FileExcelOutlined } from '@ant-design/icons'

import { useFormSubmit, useModal } from '@asiic/hooks'

import { defaultFormItemLayout } from '@asiic/utils'

import { Relativeurl, YjyaCreateType } from '../../relative/type'

import TableTransfer from '../../TableTransfer'

import type { ColumnsType } from 'antd/es/table/interface'

/**

 * 编辑角色.

 */

export const EditModal = ({ initialValues, close }: ModalParentProps<Partial<YjyaCreateType>>): JSX.Element => {

  const [listData, setListData] = useState<[]>(initialValues?.data ? initialValues?.data : []);

  const submit = useFormSubmit(Relativeurl.rqrjpost);

  const [form] = Form.useForm<YjyaCreateType>();

  const fdata = JSON.parse(JSON.stringify(initialValues));//表单

  const queryClient = useQueryClient();

  const securl = Relativeurl.rqrjpost;

  const url = Relativeurl.relateProject;

  const [modalExcel, openWithExcel, closeExcel] = useModal<Partial<YjyaCreateType>>(); //导入窗口

  const [pointNameArr, setPointNameArr] = useState('');

  // 导入

  function newCloseExcel() {

    closeExcel();

    form.validateFields().then(() => {

      queryClient.invalidateQueries('/relateDailySettlement');

    });

  }

  // 导出

  function dowlnexcel(form: Record<string, unknown>) {

    // form = { orgID: orgId.current ,pointName:pointName.current};

    axios

      .post('/caseInfo/excelDown', form, {

        responseType: 'blob',

      })

      .then((res) => {

        const disposition = res.headers['content-disposition']; // 获得二进制流在浏览器缓存中,做流转发下载

        const filename = decodeURIComponent(disposition.split('filename=')[1]); //获得文件名称 //这里res.data是返回的blob对象

        const blob = new Blob([res.data], { type: 'application/vnd.ms-excel' });

        const a = document.createElement('a');

        const href = window.URL.createObjectURL(blob); //创建下载的链接

        a.href = href;

        a.download = filename; //下载后文件名

        document.body.appendChild(a);

        a.click(); //点击下载

        document.body.removeChild(a); //下载完成移除元素

        window.URL.revokeObjectURL(href); //释放掉blob对象

      });

  }

  const leftTableColumns: ColumnsType<YjyaCreateType> = [

    {

      title: '姓名',

      dataIndex: 'userName',

      width: 90

    },

    {

      title: '临时卡号',

      dataIndex: 'userNo',

      width: 100,

      sorter: {

        compare: (a, b) => a.userNo - b.userNo,

      },

    },

    {

      title: '联系电话',

      dataIndex: 'tel',

      width: 100,

    },

    {

      title: '身份证号',

      dataIndex: 'cardNo',

      width: 160,

      sorter: {

        compare: (a, b) => a.cardNo - b.cardNo,

      },

    },

    {

      title: '性别',

      dataIndex: 'sex',

      width: 60,

    },

    {

      title: '其他计划',

      dataIndex: 'isExist',

      width: 80,

      align: 'center',

      render: (_, record) => (

        <div style={ {

          width: 40,

          lineHeight: '20px',

          height: 20,

          backgroundColor: record.isExist === '有' ? '#dbdb0f' : '#63b963',

          textAlign: 'center',

          color: 'white',

          marginLeft: 18,

          borderRadius: 5

        }}>

          {record.isExist}

  &nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔晰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值