YApi 接口多级目录改造

博客围绕 YApi 接口目录改造展开,但具体内容缺失。推测可能涉及对 YApi 接口目录的优化、调整等操作,以提升接口管理的效率和规范性。
render(){
    ...
    ...

const loop = data => data.map((item) => {
  // if (item.list && item.list.length >= 0) {
  if (item.itemType === 'cat') { // 一级目录
    return (
      <TreeNode 
        title={
          <div
            className="container-title"
            onMouseEnter={() => this.enterItem(item._id)}
            onMouseLeave={this.leaveItem}
          >
            <Link
              className="interface-item"
              onClick={e => {
                e.stopPropagation();
                this.changeExpands();
              }}
              to={'/project/' + matchParams.id + '/interface/api/cat_' + item._id}
            >
              <Icon type="folder-open" style={{ marginRight: 5 }} />
              {item.name || item.title}
            </Link>
            <div className="btns">
              <Tooltip title="删除分类">
                <Icon
                  type="delete"
                  className="interface-delete-icon"
                  onClick={e => {
                    e.stopPropagation();
                    this.showDelCatConfirm(item._id);
                  }}
                  style={{ display: this.state.delIcon == item._id ? 'block' : 'none' }}
                />
              </Tooltip>
              <Tooltip title="修改分类">
                <Icon
                  type="edit"
                  className="interface-delete-icon"
                  style={{ display: this.state.delIcon == item._id ? 'block' : 'none' }}
                  onClick={e => {
                    e.stopPropagation();
                    this.changeModal('change_cat_modal_visible', true);
                    this.setState({
                      curCatdata: item
                    });
                  }}
                />
              </Tooltip>
              <Tooltip title="添加接口">
                <Icon
                  type="plus"
                  className="interface-delete-icon"
                  style={{ display: this.state.delIcon == item._id ? 'block' : 'none' }}
                  onClick={e => {
                    e.stopPropagation();
                    this.changeModal('visible', true);
                    this.setState({
                      curCatid: item._id,
                      parentid: null
                    });
                  }}
                />
              </Tooltip>
              <Tooltip title="创建目录">
                <Icon
                  type="folder"
                  className="interface-delete-icon"
                  style={{ display: this.state.delIcon == item._id ? 'block' : 'none' }}
                  onClick={e => {
                    e.stopPropagation();
                    this.changeModal('add_folder_modal_visible', true);
                    this.setState({
                      curCatid: item._id,
                      parentid: null
                    });
                  }}
                />
              </Tooltip>
              <Tooltip title="创建文档">
                <Icon
                  type="file"
                  className="interface-delete-icon"
                  style={{ display: this.state.delIcon == item._id ? 'block' : 'none' }}
                  onClick={e => {
                    e.stopPropagation();
                    this.changeModal('add_file_modal_visible', true);
                    this.setState({
                      curCatid: item._id,
                      parentid: null
                    });
                  }}
                />
              </Tooltip>
            </div>
          </div>
        }
        key={'cat_' + item._id}
        className={`interface-item-nav1`} 
        isLeaf={true}
        autoExpandParent
      >
        {loop(item.list)}
      </TreeNode>)
  } else if(item.record_type === 2) { //文件夹类型
    return (
      <TreeNode
        className={`interface-item-nav2`}
        title={
          <div
            className="container-title"
            onMouseEnter={() => this.enterItem(item._id)}
            onMouseLeave={this.leaveItem}
          >
            <div className="interface-item" onClick={e => e.stopPropagation()}>
              <Icon type="folder-open" style={{ marginRight: 5 }} />
              {item.title || item.name}
            </div>
            <div className="btns">
              <Tooltip title="删除">
                <Icon
                  type="delete"
                  className="interface-delete-icon"
                  onClick={e => {
                    e.stopPropagation();
                    this.showConfirm(item);
                  }}
                  style={{ display: this.state.delIcon == item._id ? 'block' : 'none' }}
                />
              </Tooltip>
              <Tooltip title="修改目录">
                <Icon
                  type="edit"
                  className="interface-delete-icon"
                  onClick={e => {
                    e.stopPropagation();
                    this.changeModal('change_dir_modal_visible', true);
                    this.setState({
                      curDirData: item
                    });
                  }}
                  style={{ display: this.state.delIcon == item._id ? 'block' : 'none' }}
                />
              </Tooltip>
              <Tooltip title="创建目录">
                <Icon
                  type="folder"
                  className="interface-delete-icon"
                  onClick={e => {
                    e.stopPropagation();
                    this.changeModal('add_folder_modal_visible', true);
                    this.setState({
                      curCatid: item.catid,
                      curParentId: item._id
                    });
                  }}
                  style={{ display: this.state.delIcon == item._id ? 'block' : 'none' }}
                />
              </Tooltip>
              <Tooltip title="创建接口">
                <Icon
                  type="plus"
                  className="interface-delete-icon"
                  onClick={e => {
                    e.stopPropagation();
                    this.changeModal('visible', true);
                    this.setState({
                      curCatid: item.catid,
                      curParentId: item._id
                    });
                  }}
                  style={{ display: this.state.delIcon == item._id ? 'block' : 'none' }}
                />
              </Tooltip>
              <Tooltip title="创建文档">
                <Icon
                  type="file"
                  className="interface-delete-icon"
                  onClick={e => {
                    e.stopPropagation();
                    this.changeModal('add_file_modal_visible', true);
                    this.setState({
                      curCatid: item.catid,
                      curParentId: item._id
                    });
                  }}
                  style={{ display: this.state.delIcon == item._id ? 'block' : 'none' }}
                />
              </Tooltip>
            </div>
          </div>
        }
        key={'cat_' + item._id}
        isLeaf={true}
        autoExpandParent
      >
        {item.list && loop(item.list)}
      </TreeNode>)
  } else {
    return ( //文档 api类型
      <TreeNode
        className={`interface-item-nav3`}
        title={
          <div
            className="container-title"
            onMouseEnter={() => this.enterItem(item._id)}
            onMouseLeave={this.leaveItem}
          >
            <Link
              className="interface-item"
              onClick={e => {
                e.stopPropagation();
                this.changeExpands();
              }}
              to={'/project/' + matchParams.id + '/interface/api/' + item._id}
            >
              {item.record_type == 0 ? (<Icon type={item.interface_type === 'http' ? 'api' : 'code'} style={{ marginRight: 5 }} />) : ('')}
              {item.record_type == 1 ? (<Icon type="file-text" style={{ marginRight: 5 }} />) : ('')}
              {item.title || item.name}
            </Link>
            <div className="btns">
              <Tooltip title="删除">
                <Icon
                  type="delete"
                  className="interface-delete-icon"
                  onClick={e => {
                    e.stopPropagation();
                    this.showConfirm(item);
                  }}
                  style={{ display: this.state.delIcon == item._id ? 'block' : 'none' }}
                />
              </Tooltip>
              {item.record_type === 0 ? (
                <Tooltip title="复制接口">
                  <Icon
                    type="copy"
                    className="interface-delete-icon"
                    onClick={e => {
                      e.stopPropagation();
                      this.copyInterface(item._id);
                    }}
                    style={{ display: this.state.delIcon == item._id ? 'block' : 'none' }}
                  />
                </Tooltip>
                ) : ('')
              }
            </div>
          </div>
        }
        key={'' + item._id}
        isLeaf={true}
        autoExpandParent
      />)
  }

})





return(


。。。




。。。


            <Tree
              className="interface-list"
              defaultExpandedKeys={currentKes.expands}
              defaultSelectedKeys={currentKes.selects}
              //expandedKeys={currentKes.expands}
              selectedKeys={currentKes.selects}
              onSelect={this.onSelect}
              onExpand={this.onExpand}
              draggable
              onDrop={this.onDrop}
              autoExpandParent
            >
              <TreeNode
                className="item-all-interface"
                title={
                  <Link
                    onClick={e => {
                      e.stopPropagation();
                      this.changeExpands();
                    }}
                    to={'/project/' + matchParams.id + '/interface/api'}
                  >
                    <Icon type="folder" style={{ marginRight: 5 }} />
                    全部接口
                  </Link>
                }
                key="root"
              />
              {loop(menuList)}
            </Tree>


)

}



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值