MENU

[泛微 ecode] 拖拽上传附件功能拖拽显示优化

• 2024 年 12 月 27 日 • 阅读: 474 • 泛微OA

image.png

由于原有的拖拽附件功能ecode用户拖拽上传附件时无视觉效果,存在导致无法上传或没有拖拽上传功能的错觉。
故对该功能进行显示效果优化!
image.png

原有的index.js改为以下内容即可:

index.js

const { WeaUpload } = ecCom;

class NewWeaUpload extends React.Component {
    hash = `${new Date().getTime()}_${Math.ceil(Math.random() * 100000)}`;

    state = {
        isDragOver: false
    };

    handleDragOver = (e) => {
        e.preventDefault();
        e.dataTransfer.dropEffect = 'move';
        this.setState({ isDragOver: true });
    };

    handleDragEnter = (e) => {
        e.preventDefault();
        e.dataTransfer.dropEffect = 'move';
    };

    handleDragLeave = (e) => {
        e.preventDefault();
        this.setState({ isDragOver: false });
    };

    handleDrop = (e) => {
        e.preventDefault();
        this.setState({ isDragOver: false });
    };

    render() {
        const { uploadId } = this.props;
        const { isDragOver } = this.state;
        const drop_element = `weaUploadDragDrop_${uploadId}_${this.hash}`;
        const newProps = {
            ...this.props,
            customOptions: {
                ...this.props.customOptions,
                drop_element,
            }
        };

        const dragAreaStyle = {
            width: '100%',
            minHeight: '32px',
            border: '2px dashed transparent',
            borderRadius: '4px',
            transition: 'all 0.3s',
            cursor: 'default',
            position: 'relative',
            ...(isDragOver && {
                border: '2px dashed #1890ff',
                backgroundColor: 'rgba(24, 144, 255, 0.1)',
            })
        };

        const overlayStyle = {
            display: isDragOver ? 'flex' : 'none',
            position: 'absolute',
            top: 0,
            left: 0,
            right: 0,
            bottom: 0,
            backgroundColor: 'rgba(24, 144, 255, 0.1)',
            justifyContent: 'center',
            alignItems: 'center',
            fontSize: '14px',
            color: '#1890ff',
            pointerEvents: 'none',
            zIndex: 1
        };

        return (
            <div
                id={drop_element}
                style={dragAreaStyle}
                onDragOver={this.handleDragOver}
                onDragEnter={this.handleDragEnter}
                onDragLeave={this.handleDragLeave}
                onDrop={this.handleDrop}
            >
                <div style={overlayStyle}>
                    <span>上传附件</span>
                </div>
                <WeaUpload {...newProps} _noOverwrite={true} />
            </div>
        )
    }
}

ecodeSDK.setCom('${appId}', 'NewWeaUpload', NewWeaUpload);
添加新评论

已有 17 条评论
  1. alex alex

    丸子哥是直接用嘛,还是需要改什么东西,好像不生效啊

    1. @alex需要配合云商店的拖拽上传的ecode(先导入云商店的拖拽上传),之后把index.js改为我发的即可

    2. alex alex

      @丸子就只需要导入,然后修改你这个,发布,不需要修改其他东西是吧,我就是这么操作的好像不生效,直接导入的那个也没效果

    3. @alex哦豁,可能是浏览器缓存没刷新?,刷新下浏览器或者开个隐私窗口试试,还不行的话,就得看是不是报错了

    4. ANDY ANDY

      @丸子需要重启服务么?

    5. @ANDY不需要,一般是页面缓存,需要强制刷新下浏览器,清一下缓存

    6. ANDY ANDY

      @丸子谷歌浏览器清理了缓存好像还不行,还有可能是哪设置下

    7. oaweaver oaweaver

      @ANDY确实不生效(可能和版本有关系)。使用极简版:

      ecodeSDK.overwriteClassFnQueueMapSet('WeaUpload',{
      fn:(Com,newProps)=>{

      if(newProps.viewAttr == 1) return; newProps.dragUpload = true ; return newProps;

      },

      order: 1, desc: 'PC任意界面附件上传文件拖拽功能(无动画效果)'

      });

    8. ANDY ANDY

      @oaweaver版本: 9.00.2108.04 原有的 index.js 改为极简版试了也不行

    9. ANDY ANDY

      @oaweaver好了,加错位置了

  2. chen chen

    流程可用,建模页面会有问题

    1. @chen是滴这是原作者在register.js中写道: if (!window.location.hash.startsWith('#/main/workflow/req')) return;
      这使代码只有在流程页面才生效

    2. chen chen

      @丸子不是这个问题,建模页面空附件的时候无法上传,报错Uncaught TypeError: Cannot read properties of null (reading 'style')
      有附件编辑的时候就正常

    3. @chen哦吼,原来如此,周一上班了我去看看

  3. cwx cwx

    有大佬方便把整个Ecode文件发我一份嘛?我这边访问不了云商店应用库

    1. @cwx好的,已邮件发送

  4. 呼呼 呼呼

    大佬 ,我想在文件上传时检查本地文件名是否包含符号,并修改上传后的文件名,onFileNameEdit方法没弄懂怎么用,帮忙指导下