ant design pro 实现审核图片盖章功能

介绍: 鼠标变成图章,点击后,在图片对应位置加盖公章功能。

如图所示:
在这里插入图片描述
源代码:

import { Card, Modal} from 'antd';
import React, { Component } from 'react';
import { connect } from 'dva';
const { confirm } = Modal;
@connect(({ project, loading }) => ({
    project: project,
    loading: loading.models.project,
}))
@Form.create()

export default class AidCheck extends Component {

    constructor(porps) {
        super(porps);
        this.state = {
            value: {
                files:[]
            },
            //后台需要数据
            pointerArr:[],
            //鼠标图案
            cursorImg:'url(https://cdn.jsdelivr.net/gh/moezx/cdn@3.1.9/img/Sakura/cursor/normal.cur), auto',
            //章图案
            chapterImg:'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1523059142,3498552467&fm=26&gp=0.jpg'

        }
    }

    componentDidMount = () => {
        document.getElementById('img').style.cursor = this.state.cursorImg
    }


    handleSeal = () => {//盖章
      //提交pointerArr数据给后台
    }
    handCancelSeal = () => { //取消盖章
        let paras = document.getElementsByClassName('chapterImg');
        while (paras[0]) {
            paras[0].parentNode.removeChild(paras[0]);
        }
        this.setState({
            pointerArr:[]
        })
    }
    getPosition = (e,index)=>{
        e.persist()
        const { chapterImg } = this.state
        let x = e.clientX - e.target.x;
        let y = e.clientY - e.target.y;
        //或者
        //let x = Math.abs(currentE.clientX - currentE.target.x);
        //let y = Math.abs(currentE.clientY - currentE.target.y);
        let arr = []

        confirm({
            title: '确认在此处盖章嘛?',
            content: '',
            okText: '确认',
            cancelText: '取消',
            onOk:()=>{
                let IMG = document.createElement('img')
                IMG.src = chapterImg
                IMG.style.width = '130px'
                IMG.style.height = '130px'
                IMG.className = 'chapterImg'
                IMG.style.position = 'absolute'
                IMG.style.top = e.pageY - 180 +'px'
                IMG.style.left = x-40+'px' 
                //或者 
                //IMG.style.left = currentE.clientX - (currentE.target.offsetLeft + currentE.target.offsetWidth + 250 )+'px'
                document.getElementById('img').appendChild(IMG)
                arr.push({
                    index,
                    x,
                    y
                })
                this.setState({
                    pointerArr:arr
                })
            },
            onCancel() {
              console.log('Cancel');
            },
        });
        console.log(e,index ,x,y)
        console.log(x,y,'---')
    }

    render() {
        const { value} = this.state;
        return (
              <Card bordered={false} title="协议预览" style={{flex:1,marginLeft:'10px',position:'relative'}} id='img'>
                  {value.files.map((i,index)=><img src={i.sourceUrl} style={{ width: '595px', height: 'auto', display:'block'}} onClick={(e)=>this.getPosition(e,index)}/>)}
              </Card> 
        )
    }
}

### 回答1: Ant Design Pro实现Tab页切换功能非常简单,只需要使用 `Tabs` 和 `TabPane` 组件即可。 以下是一个基本的示例代码: ```jsx import { Tabs } from 'antd'; const { TabPane } = Tabs; function callback(key) { console.log(key); } function TabDemo() { return ( <Tabs defaultActiveKey="1" onChange={callback}> <TabPane tab="Tab 1" key="1"> Content of Tab Pane 1 </TabPane> <TabPane tab="Tab 2" key="2"> Content of Tab Pane 2 </TabPane> <TabPane tab="Tab 3" key="3"> Content of Tab Pane 3 </TabPane> </Tabs> ); } export default TabDemo; ``` 在上面的示例中,我们首先引入了 `Tabs` 和 `TabPane` 组件,然后定义了一个回调函数 `callback` 来处理切换事件。接着在 `Tabs` 中定义了三个 `TabPane`,每个 `TabPane` 都有一个唯一的 `key` 属性和对应的标签名。我们将默认激活的 `TabPane` 设置为第一个,通过 `onChange` 属性来监听切换事件并调用 `callback` 函数。 最后,我们将 `TabDemo` 组件导出,可以在其他组件中引入并使用。 ### 回答2: Ant Design Pro 是一个基于 Ant Design 设计规范的企业级中后台前端/设计解决方案,提供了丰富的组件和布局样式,使得开发者可以快速构建出美观、实用的管理系统。 要实现 tab 页切换功能,可以使用 Ant Design Pro 中提供的 Tabs 组件。使用 Tabs 组件,需要在业务组件中引入 Tabs、TabPane 组件,并通过 state 来控制当前选中的标签页。 首先,在业务组件中引入 Tabs 和 TabPane 组件: ```javascript import { Tabs } from 'antd'; const { TabPane } = Tabs; ``` 然后,使用 Tabs 组件创建标签页,并通过 state 来控制当前选中的标签页: ```javascript class MyComponent extends React.Component { state = { activeKey: '1', // 选中的标签页的 key } onChange = activeKey => { this.setState({ activeKey }); } render() { const { activeKey } = this.state; return ( <Tabs activeKey={activeKey} onChange={this.onChange}> <TabPane tab="Tab 1" key="1"> Content of Tab Pane 1 </TabPane> <TabPane tab="Tab 2" key="2"> Content of Tab Pane 2 </TabPane> <TabPane tab="Tab 3" key="3"> Content of Tab Pane 3 </TabPane> </Tabs> ); } } ``` 在上面的代码中,Tabs 组件的 activeKey 属性用来设置当前选中的标签页,onChange 属性用来监听标签页切换事件。通过在 state 中保存选中的标签页的 key,并在切换标签页时更新 activeKey 的值来实现标签页的切换。 以上就是使用 Ant Design Pro 实现 tab 页切换功能的步骤。通过引入 Tabs 和 TabPane 组件,并结合 state 来控制选中的标签页,可以实现简单而实用的标签页切换功能。 ### 回答3: Ant Design Pro 是一个开箱即用的企业级中后台前端/设计解决方案,提供了丰富的组件和模板,快速搭建出符合企业需求的系统。要实现 Tab 页切换功能,需要进行以下步骤: 1. 在 Ant Design Pro 项目中,安装 react-router-dom 库,用于实现路由功能。 2. 在 src 目录下创建一个新的文件夹 pages,用于存放各个页面组件。 3. 在 pages 文件夹下创建一个新的文件,例如 TabPage.js,用于编写 Tab 页的内容。 4. 在 TabPage.js 文件中,使用 Ant Design Pro 提供的 Tabs 组件,创建一个选项卡布局。 5. 在 Tabs 组件的 TabPane 子组件中,通过编写 JSX 代码,实现各个 Tab 页的内容。 6. 在 TabPage.js 文件中,使用 react-router-dom 提供的路由功能,将 Tabs 组件与对应的 Tab 页内容进行绑定。 7. 在 src 目录下的 router.js 文件中,配置路由表,将 TabPage.js 组件与对应的路径进行映射。 8. 在 src 目录下的 menu.js 文件中,配置菜单选项,将 Tab 页添到菜单中,作为可点击的选项。 9. 运行 Ant Design Pro 项目,在菜单中点击选项,即可实现 Tab 页的切换功能。 以上步骤中,关键点是使用 react-router-dom 进行路由配置,并将 Tabs 组件与路由进行绑定。这样点击菜单选项时,路由会发生变化,Tabs 组件会显示对应的 Tab 页内容。另外,利用 Ant Design Pro 提供的 Tabs 组件和其属性,可以对选项卡的样式、布局、切换方式等进行自定义设置,以满足实际需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

刘斩仙的笔记本

富贵险中求

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

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

打赏作者

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

抵扣说明:

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

余额充值