由于原有的拖拽附件功能ecode用户拖拽上传附件时无视觉效果,存在导致无法上传或没有拖拽上传功能的错觉。
故对该功能进行显示效果优化!
原有的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);
[泛微 ecode] 拖拽上传附件功能拖拽显示优化 by https://oneszhang.com/archives/130.html
丸子哥是直接用嘛,还是需要改什么东西,好像不生效啊
需要配合云商店的拖拽上传的ecode(先导入云商店的拖拽上传),之后把index.js改为我发的即可
就只需要导入,然后修改你这个,发布,不需要修改其他东西是吧,我就是这么操作的好像不生效,直接导入的那个也没效果
哦豁,可能是浏览器缓存没刷新?,刷新下浏览器或者开个隐私窗口试试,还不行的话,就得看是不是报错了
需要重启服务么?
不需要,一般是页面缓存,需要强制刷新下浏览器,清一下缓存
谷歌浏览器清理了缓存好像还不行,还有可能是哪设置下
确实不生效(可能和版本有关系)。使用极简版:
ecodeSDK.overwriteClassFnQueueMapSet('WeaUpload',{
if(newProps.viewAttr == 1) return; newProps.dragUpload = true ; return newProps;fn:(Com,newProps)=>{
},
order: 1, desc: 'PC任意界面附件上传文件拖拽功能(无动画效果)'});
版本: 9.00.2108.04 原有的 index.js 改为极简版试了也不行
好了,加错位置了
流程可用,建模页面会有问题
是滴这是原作者在register.js中写道: if (!window.location.hash.startsWith('#/main/workflow/req')) return;这使代码只有在流程页面才生效
不是这个问题,建模页面空附件的时候无法上传,报错Uncaught TypeError: Cannot read properties of null (reading 'style')有附件编辑的时候就正常
哦吼,原来如此,周一上班了我去看看
有大佬方便把整个Ecode文件发我一份嘛?我这边访问不了云商店应用库
好的,已邮件发送
大佬 ,我想在文件上传时检查本地文件名是否包含符号,并修改上传后的文件名,onFileNameEdit方法没弄懂怎么用,帮忙指导下