• 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}
      />
    )
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72

    相关的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;
        }
      }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

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

  • 相关阅读:
    03_css的文本样式设置
    WordPress主题WoodMart v7.3.2 WooCommerce主题和谐汉化版下载
    如何使用Python将PDF转为图片
    21年-05-自研-自我准备
    数仓建设(二)
    9、osg的texture转换为虚幻引擎的UTexture2D
    都2022年了不会还有人不懂ajax吧(明天更新省市区三级联动)
    【jvm】虚拟机栈之操作数栈
    食品接触用纸制品与竹木制品的最新标准
    Linux高并发连接数解决
  • 原文地址:https://blog.csdn.net/m0_46364033/article/details/134464342