当前位置: 首页 > article >正文

react 手机端 rc-table列隐藏(根据相关条件是否隐藏)、实现图片上传操作

最近公司某一项目的手机端,新增需求:table中的附件要可以编辑,并且是在特定条件下可编辑,其他仅做展示效果。
查阅官方文档,没有发现是否隐藏这一属性,通过css控制样式感觉也比较麻烦,后面发现可以通过过滤来控制
效果图:
不可编辑、仅展示
在这里插入图片描述
可编辑
在这里插入图片描述
在这里插入图片描述
实现代码(主要是相关的columns):

const [detailList, setDetailList] = useState([]) // 明细信息
const [sealList, setSealList] = useState([]); // 上传的范印
const [editId, setEditId] = useState(''); // 修改范印的数据id

const columns = [
// {} ...
{
        title: getIntl({ id: 'sealFileId' }), // 范印
        dataIndex: 'sealFileSuffix',
        key: 'sealFileSuffix',
        render: (val, params) => {
          return <a onClick={()=>{
            download({ fileId: params.sealFileId,  fileName: params.sealFileSuffix })
          }}>{val}</a>;
        },
        align: 'center',
      },
      {
        title: getIntl({ id: 'operation' }), // 操作
        dataIndex: '',
        key: 'operation',
        render: (val, params, sss) => {
          return <a onClick={()=>{
            setEditId(params.id) // 这里记录下修改的是表格中的哪条数据,对应后面上传成功后进行匹配修改表格数据
          }}>
            <ImageUploader
                value={[]}
                maxCount={1}
                onChange={setSealList}
                upload={upload}
              >
                <span>上传</span>
              </ImageUploader>
          </a>;
        },
        align: 'center',
        hidden: qs.parse(location.search)?.pageType !== 'submit' 
        // 这里是如果当前url上pageType为submit时,操作列展示可操作
        // 这里通过filter过滤来实现某条件下,此操作列是否隐藏
      },
     ].filter(item => !item.hidden)


  const upload = async file => {
      const {url} = getMethodInfo('FILE_UPLOAD')
      const data = new FormData()
      data.append('file', file)
      await axios({ // 这里自己后端的图片上传接口
        url: url,
        method: 'post',
        data,
      }).then((res) => {
        if (res.data.code == 200){
          detailList.map(item =>{
            if(item.id === editId) {
              item.sealFileId = res.data.datas?.fileId
              item.sealFileSuffix = res.data.datas?.fileName
            }
          })
          setDetailList(detailList)
        }
      })
      return { url: '' }
    }

return (
  <Table
    emptyText={getIntl({ id: 'component.noticeIcon.empty' })}
    columns={columns}
    data={detailList}
  />
)

相关的css

:global {
    .adm-image-uploader-cell {
      display: none;
    }
    .adm-space-item .adm-image-uploader-upload-button-wrap {
      display: block !important;
    }
    .adm-space-horizontal > .adm-space-item {
      margin-right: 0;
    }
  }

其他:其他相关可以去参考官方文档
https://www.npmjs.com/package/rc-table


http://www.kler.cn/a/134000.html

相关文章:

  • 会话信息处理: HttpSession、token序列化、收集登录设备信息、基于`spring-session-data-redis`实现session共享。
  • 【FFmpeg】FFmpeg 函数简介 ③ ( 编解码相关函数 | FFmpeg 源码地址 | FFmpeg 解码器相关 结构体 和 函数 )
  • HTTP常见的状态码有哪些,都代表什么意思
  • Ceph 中Crush 算法的理解
  • 机器学习在医疗健康领域的应用
  • @ComponentScan:Spring Boot中的自动装配大师
  • MIB 6.S081 System calls(1)using gdb
  • 设计模式-适配器-笔记
  • 算法之路(二)
  • 【NI-DAQmx入门】校准
  • 05 robotFrameWork+selenium2library 一维数组的使用
  • Nodejs 第十九章(pngquant)
  • HTTP Error 500.31 - Failed to load ASP.NET Core runtime
  • 企业微信H5开发遇到的坑
  • vue3 tsx 项目中使用 Antv/G2 实现多线折线图
  • Python操控HDFS
  • struct结构体【C#】
  • Mac M1 M1 pro安装 protobuf 2.5.0
  • vue中使用echarts实现省市地图绘制,根据数据显示不同区域颜色,点击省市切换,根据经纬度打点
  • 【VSCode】Visual Studio Code 配置简体中文环境教程
  • 10个提高VS Code工作效率的技巧
  • 【Linux网络】典型NAS存储方式:NFS网络共享存储服务
  • Android跨进程通信,IPC,RPC,Binder系统,C语言应用层调用
  • 批量替换WordPress文章内图片链接
  • vue3.0中实现excel文件的预览
  • 07-流媒体-RTMP推流