<template>
  <div class="congestion">
    <div>
      <!-- :style="{ width: dataList.length * 300 }" -->
      <div
        :class="
          selectIndex == index
            ? selectLine < 1
              ? 'item action Abefore'
              : 'item action Aafter'
            : selectIndex + selectLine == index
            ? selectLine < 1
              ? 'item action Aafter'
              : 'item action Abefore'
            : 'item'
        "
        v-for="(item, index) in dataList"
        :key="index"
      >
        <i class="after" v-if="index === 0"></i>
        <i
          class="after"
          v-else
          @click="selectItem(index, -1, dataList[index - 1])"
        ></i>
        <i class="before" v-if="index === dataList.length - 1"></i>
        <i class="before" v-else @click="selectItem(index, +1, item)"></i>

        <span></span>
        <div>{{ item.title }}</div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  name: "ProgressBar",
  components: {},
  props: {
    dataList: {
      type: Array,
      default: () => {
        return [];
      },
    },
    selectIndex: {
      type: Number,
      default: 1,
    },
    reset: {
      type: Boolean,
      default: false,
    },
  },
  data() {
    return {
      // selectIndex: 0,
      selectLine: -1,
    };
  },
  created() {},
  watch: {
    reset: {
      handler(newV) {
        if (newV) {
          this.selectLine = -1;
        }
      },
      immediate: true,
    },
  },
  methods: {
    selectItem(index, num, item) {
      // this.selectIndex = index;
      this.selectLine = num;
      if (item) this.$emit("selectItem", item, index);
    },
  },
  mounted() {},
};
</script>

<style lang="scss" scoped>
.congestion {
  width: 100%;
  height: 35px;
  display: inline-flex;
  flex-direction: row;

  > div {
    position: relative;
    width: 100%;
    height: 35px;
    display: inline-flex;
    flex-direction: row;

    > .item .after {
      position: absolute;
      display: inline-flex;
      left: 0px;
      top: -5px;
      width: 45px !important;
      height: 35px !important;
      background-color: transparent;
      cursor: pointer;
    }

    > .item .after::after {
      content: "";
      position: absolute;
      display: inline-flex;
      left: 0px;
      top: 8px;
      width: 45px !important;
      height: 3px !important;
      background-color: #c7c7c7;
    }

    > .item .before {
      position: absolute;
      display: inline-flex;
      right: 0px;
      top: -5px;
      width: 45px;
      height: 35px;
      background-color: transparent;
      cursor: pointer;
    }

    > .item .before::after {
      content: "";
      position: absolute;
      display: inline-flex;
      left: 0px;
      top: 8px;
      width: 45px !important;
      height: 3px !important;
      background-color: #c7c7c7;
    }

    .item.action .after::after {
      background-color: #72fdc9;
    }

    .item.action.Aafter .after::after {
      background-color: #c7c7c7 !important;
    }

    > .item.action.Aafter .before::after {
      background-color: #72fdc9;
    }

    > .item.action.Abefore .after::after {
      background-color: #72fdc9;
    }

    > .bef::before {
      background-color: #72fdc9 !important;
    }

    > .aft::after {
      background-color: #72fdc9 !important;
    }

    > .item.action span {
      background-color: #72fdc9;
      cursor: pointer;
    }

    > .item.action span::after {
      border-color: #72fdc9;
    }

    > .action div {
      color: #72fdc9 !important;
    }

    > .item {
      position: relative;
      width: 113px;
      height: 35px;
      display: inline-flex;
      flex-direction: column;
      justify-items: center;

      > span {
        position: absolute;
        display: inline-flex;
        width: 9px;
        height: 9px;
        background: #c7c7c7;
        border-radius: 50%;
        opacity: 1;
        left: 53px;
      }

      > div {
        font-size: 14px;
        position: relative;
        display: inline-flex;
        width: 100%;
        align-items: center;
        justify-content: center;
        top: 5px;
        margin-top: 10px;
        color: #c7c7c7;
      }

      > span::after {
        content: "";
        position: absolute;
        display: inline-flex;
        width: 15px;
        height: 15px;
        border: 1px solid #c7c7c7;
        border-radius: 50%;
        opacity: 1;
        top: -3.5px;
        left: -3px;
      }
    }
  }
}
</style>
