> ## Documentation Index
> Fetch the complete documentation index at: https://help.dingtalk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 步骤条

> 页面介绍了步骤条组件的使用场景、基础属性配置及高级配置，包括当前步骤属性、类型属性、展示方向等，并提供了动态设置步骤数据的方法和典型案例。

| **能力** | **免费版** | **轻享版** | **专业版** | **专属版** |
| ------ | ------- | ------- | ------- | ------- |
| 步骤条    | 不支持     | 不支持     | 支持      | 支持      |

步骤条组件是自定义页面的高级组件。

## 1. 使用场景

自定义页面的步骤条组件，适用于制作派遣人员信息录入，登录信息注册等，可以对基本信息的填写进度作提醒。

<Note>
  组件属性以及使用和示例请[**点击此处**](/zh/open/yida/components/advanced/steps)查看
</Note>

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/gif/1631594070671-ce77080f-51cd-491c-954a-b53ecbc80249.gif)
</Frame>

步骤条演示

## 2. 组件基础属性

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/png/1631600176795-84c53e34-b8c5-4954-a78f-30836e03cd2f.png)
</Frame>

步骤组件属性设置

### 2.1 当前步骤属性

数字类型，控制当前步骤所在步骤数据的状态，如果步骤数据的状态都是默认，那么当前步骤就会显示进行中的状态，之前的步骤显示已完成，后面的步骤显示等待。

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/png/1631600574234-e8f2bf08-27a8-48e8-abb9-efbe7d1b971e.png)
</Frame>

当前步骤属性

### 2.2 类型属性

步骤条的类型分为cricle圆型，arrow箭型，dot点型，如图为以下三种样式。

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/png/1631603521283-6bc6a7a6-e401-406f-a1f2-5a155e825b54.png)
</Frame>

步骤条类型属性样式

### 2.3 展示方向

步骤条的展示方向可以设置水平和垂直，其中箭型不能设置垂直样式。

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/png/1631603765802-f61212d8-1d34-434e-b900-8f67702d6256.png)
</Frame>

步骤条展示方向属性样式

### 2.4 内容排列属性

内容排列属性只有cricle类型支持，箭型和点型不支持这个属性，所以选择了这两种类型后不会。

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/png/1631609891003-91296572-8e95-416b-a4fb-fa27431c069e.png)
</Frame>

步骤条内容排列属性样式

### 2.5 只读模式

默认关闭只读模式，允许点击步骤节点，可以执行在步骤节点设置的自定义动作。

开启只读默认，不允许点击步骤节点，不会触发自定义动作。

设置节点的自定义动作：

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/gif/1631607069011-f532ea25-315f-4225-889a-49578330a0a4.gif)
</Frame>

步骤条自定义动作

<Note>
  以下代码可以直接复制到JS面板
</Note>

```javascript theme={"theme":{"light":"github-light","dark":"github-dark"}}
export function onClick(index) {
  this.utils.toast({
    title: `当前点击的index：${index}`
  });
  if(index == 0){
    this.utils.router.push('https://www.yidaapps.com', {}, true, true)
  }
}
```

## 3. 组件高级配置

### 3.1 数据格式

| **字段**   | **名称** | **说明**                                                           |
| -------- | ------ | ---------------------------------------------------------------- |
| title    | 标题     |                                                                  |
| content  | 内容     | 如不传，会根据外层的 Step 的 当前步骤(current) 属性生成，可选值为 wait, process, finish, |
| status   | 状态     |                                                                  |
| icon     | 图标     |                                                                  |
| percent  | 百分比    |                                                                  |
| disabled | 是否禁用   |                                                                  |

```javascript theme={"theme":{"light":"github-light","dark":"github-dark"}}
[
    {
        "title": "step1",
        "content": "内容",
        "status": "wait",
        "icon": "smile",
        "percent": 100,
        "disabled": false,
    },
    {
        "title": "step2",
        "content": "内容",
        "status": "wait",
        "icon": "smile",
        "percent": 100,
        "disabled": false,
    },
]
```

### 3.2 动态设置步骤数据

步骤条的步骤数据绑定变量数据源，拖动一个按钮组件，设置点击动作。当点击时更改变量数据源内的值来实现动态设置步骤数据的功能。

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/png/1631613266019-4d351d86-4945-4977-a1bc-34275a317482.png)
</Frame>

绑定变量数据源

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/gif/1631613581492-cccfcba9-6b90-42a4-9b29-73e5719fbe84.gif)
</Frame>

设置按钮组件的动作

<Note>
  以下代码可以直接复制到 JS 面板
</Note>

```javascript theme={"theme":{"light":"github-light","dark":"github-dark"}}
//添加一项绑定动作设置
export function onClickAdd(){
  console.log('onClick');
  const data = this.state.demoData
  data.push({
    'title': 'newStep',
    'content': '新增内容'
  })
  this.setState({
    demoData: data,
    currentData: this.state.currentData + 1
  })
}
```

### 3.3 典型案例

设置变量数据源，默认值为 0。给步骤条的当前步骤属性绑定变量数据源。

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/png/1631614952695-824e0dec-90d5-45bd-9819-3dc23159c922.png)
</Frame>

绑定变量数据源

#### 3.3.1 准备操作

##### （1）设置容器组件的唯一标识，将需要填写的组件数据放置在容器组件中，根据容器组件的显示隐藏控制下一步需要填写的组件显隐。

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/png/1631615269705-359c059c-c42a-4688-b978-b76a63bf3d24.png)
</Frame>

设置容器组件唯一标识

##### （2）设置提交成功/失败的提示文本、图标和样式，这里使用变量数据源控制容器组件显隐

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/png/1631616282951-0af524f9-3eb0-4aa1-b2db-b9b71f255013.png)
</Frame>

设置数据源控制容器显隐

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/gif/1632277395708-8eeaf3fc-a5be-4fa0-95c3-c36998ee267c.gif)
</Frame>

block\_3容器绑定变量数据源

##### （3）给按钮组件绑定动作，其中下一步，重新提交和再次提交按钮共用一个 onclick 动作。

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/png/1631617312153-bec87a71-0c1c-4e13-bfe5-f6717987dfa7.png)
</Frame>

按钮组件绑定动作

##### （4）步骤节点设置自定义点击动作 onclick2

<Frame>
  ![](https://yida-support.oss-cn-shanghai.aliyuncs.com/static/gif/1631617606169-b5a5cc37-39f6-473f-ba00-6522ed81246c.gif)
</Frame>

步骤条绑定动作+效果演示

<Note>
  以下代码可以直接复制到 JS 面板，注意：需要替换组件的唯一标识
</Note>

```javascript theme={"theme":{"light":"github-light","dark":"github-dark"}}
/**
* button onClick
*/
export function onClick() {
  let formCurrent = this.state.formCurrent
  switch (formCurrent) {
    //第一次点击formCurrent是0
    case 0:
        this.$("block_1").set("behavior", "HIDDEN")
        this.$("block_2").set("behavior", "NORMAL")
        this.setState({
          formCurrent: formCurrent + 1
        })
      break;
    case 1:
        this.$("block_2").set("behavior", "HIDDEN")
        //随机成功或者失败。后续可以调用数据源用请求的返回结果判断成功或者失败。
        const isSuccess = Math.random() < 0.5 ? "block_3_type" : "block_4_type";
        console.log(isSuccess)
        this.setState({
          formCurrent: formCurrent + 1,
          [isSuccess]: "NORMAL",
          action: "HIDDEN"
        })
      break;
    case 2:
    //将容器1组件值重置为空
      this.$("textField_ktjfxslga").reset()
      this.$("textField_ktjfxslh").reset()
      this.$("textField_ktjfxslj").reset()
      this.$("textField_ktjfxslk").reset()
      this.$("textareaField_ktjfxslm").reset()
    //将容器2组件值重置为空
      this.$("textField_ktjfxsln").reset()
      this.$("textField_ktjfxslo").reset()
      this.$("textField_ktjwwsj5").reset()
      this.$("textareaField_ktjfxsls").reset()

    //将容器1显示，容器2隐藏
      this.$("block_1").set("behavior", "NORMAL")
      this.$("block_2").set("behavior", "HIDDEN")
      this.setState({
        formCurrent: 0,
        action: "NORMAL",
        block_3_type: "HIDDEN",
        block_4_type: "HIDDEN"
      })
      break;
  }
}

/**
 * FusionStep onClick
 * @param value 节点索引
 */
export function onClick2(index) {
  this.utils.toast({
    title: `当前点击的index：${index}`
  });
  if(index == 0){
    this.setState({
      formCurrent: 0,
      action: "NORMAL",
      block_3_type: "HIDDEN",
      block_4_type: "HIDDEN"
    })
    this.$("block_1").set("behavior", "NORMAL")
    this.$("block_2").set("behavior", "HIDDEN")
  }
}
```
