1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/open-hand-choerodon-ui

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
export.md 3.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gxc Отправлено 5 лет назад f6086de
order title
26
en-US zh-CN
export a report
导出表单

zh-CN

展示一个表单的导出操作

en-US

Simple export a report

import { Table,Button, Icon, Divider } from 'choerodon-ui';
import React, { useState } from 'react';
import axios from 'axios';

const columns = [{
  title: 'Name',
  dataIndex: 'name',
  key: 'name1',
  render: text => <a href="#">{text}</a>,
}, {
  title: 'Age',
  dataIndex: 'age',
  key: 'age1',
}, {
  title: 'Address',
  dataIndex: 'address',
  key: 'address1',
}, {
  title: '',
  key: 'action1',
  render: (text, record) => (
    <span>
      <a href="#">Action 一 {record.name}</a>
      <Divider type="vertical" />
      <a href="#">Delete</a>
      <Divider type="vertical" />
      <a href="#" className="c7n-dropdown-link">
        More actions <Icon type="down" />
      </a>
    </span>
  ),
}];

const data = [{
  key: '11',
  name: 'John Brown',
  age: 32,
  address: 'New York No. 1 Lake Park',
}, {
  key: '12',
  name: 'Jim Green',
  age: 42,
  address: 'London No. 1 Lake Park',
}, {
  key: '13',
  name: 'Joe Black',
  age: 32,
  address: 'Sidney No. 1 Lake Park',
}];

const App = () => {
   const [exported, setExported] = useState(false);
   const basicUrl = ``;
   const token = ``;
   const filename = ``;
   const dataParam = {};
   let iframe 
   
   // eslint-disable-next-line no-unused-vars
   const handleExportPost = () => {
       setExported(true);

       axios.post(`${basicUrl}/v1/export`,{
           _token:token,
           filename,
       }).then(res => {
           setExported(false);
           const aLink = document.createElement("a");
             const blob = new Blob([res.data], {type: "application/vnd.ms-excel"})
             aLink.href = URL.createObjectURL(blob)
             aLink.download = filename
             aLink.click()
             document.body.appendChild(aLink)
       }).catch(err => {
           setExported(false);
           console.log(err);
       })
   } 

   const handleExportGet = () => {
        if (!iframe) {
            iframe = document.createElement('iframe');
            iframe.id = '_export_window';
            iframe.name = '_export_window';
            iframe.style.cssText =
            'position:absolute;left:-10000px;top:-10000px;width:1px;height:1px;display:none';
            document.body.appendChild(iframe);
        }
        setExported(true);
        const form = document.createElement('form');
        form.target = '_export_window';
        form.method = 'get';
        form.action = 'http://gitee.com/xurime/excelize/raw/master/test/SharedStrings.xlsx';
        const s = document.createElement('input');
        s.id = '_request_data';
        s.type = 'hidden';
        s.name = '_request_data';
        s.value = JSON.stringify(dataParam);
        form.appendChild(s);
        document.body.appendChild(form);
        form.submit();
        document.body.removeChild(form);
        setExported(false);
   };

   return (
       <>
          <Button
            type="primary"
            onClick={handleExportGet}
            disabled={exported}
          >
            导出表单
          </Button>
          <Table columns={columns} dataSource={data} filterBarPlaceholder="过滤表" onColumnFilterChange={item => console.log(item)} />
       </>
  );
}


ReactDOM.render(<App/>, mountNode);

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://gitlife.ru/oschina-mirror/open-hand-choerodon-ui.git
git@gitlife.ru:oschina-mirror/open-hand-choerodon-ui.git
oschina-mirror
open-hand-choerodon-ui
open-hand-choerodon-ui
master