<template>
  <div class="radioGroup">
    <template v-for="(val, ind) in clueOptionList">
      <div class="title" v-if="val.customerClueName">
        <span class="van-f-red" v-if="val.isMust == 0">*</span>
        {{ val.customerClueName }}
      </div>
      <template v-if="val.answerType == 'dx'">
        <van-radio-group v-model="val.searchValue" @change="radioGroupChange">
          <template v-for="(item, index) in val.customerClueOptionList">
            <van-radio :name="item.customerClueOptionId" :key="index" @click="radioClick">
              {{ item.customerClueOption }}
            </van-radio>
            <radioGroup
              :clueOptionList="item.customerClueItemList"
              :parentOptionList="val"
              :parentId="item.customerClueOptionId"
              v-if="val.searchValue == item.customerClueOptionId"></radioGroup>
          </template>
        </van-radio-group>
      </template>
      <!-- 回答类型:wb-文本，sz-数字，rq-日期，zp-照片，dx -->
      <template v-if="val.answerType == 'wb'">
        <template v-if="parentOptionList.searchValue == val.itemOptionParentId">
          <van-field
            v-model="val.answerValue"
            :placeholder="val.remark"
            :minTextLength="val.minTextLength"
            :error-message="val.remark"
            :class="{
              fieldInput: true,
              rulesClass: val.answerValue != null && val.answerValue.length < val.minTextLength,
            }" />
          <span
            class="rulesErrorMessage"
            v-if="val.answerValue != null && val.answerValue.length < val.minTextLength">
            {{ val.remark }}
          </span>
        </template>
      </template>
      <template v-if="val.answerType == 'sz'">
        <van-field
          class="fieldInput"
          v-model="val.answerValue"
          :placeholder="val.remark"
          :minTextLength="val.minTextLength"
          :error-message="val.remark"
          type="number"></van-field>
      </template>
    </template>
  </div>
</template>
<script>
export default {
  name: 'radioGroup',
  props: {
    clueOptionList: {
      type: Array,
      default: () => [],
    },
    parentOptionList: {
      type: Object,
      default: () => {},
    },
    parentId: {
      type: [Number, null],
      default: null,
    },
  },
  data() {
    return {};
  },
  created() {
    // console.log(this.clueOptionList);
  },
  methods: {
    radioGroupChange(name) {
      if (!name) return;
      // console.log(name);
      // console.log(this.clueOptionList);
      // 如果选中的数据有父级，将父级数据修改为选中状态
      if (this.parentOptionList && this.parentId) {
        this.$set(this.parentOptionList, 'searchValue', this.parentId);
      }
      // 获取选中数据
      let clueOptionList = this.clueOptionList.find((val) => val.searchValue == name);
      let activaRadio = clueOptionList.customerClueOptionList.find(
        (val) => val.customerClueOptionId == name
      );
      // 修改选中状态
      this.$set(activaRadio, 'value', 'Y');

      // 过滤未选中的数据
      let exceptItself = clueOptionList.customerClueOptionList.filter(
        (val) => val.customerClueOptionId !== name
      );
      // 删除未选中数据状态兄弟级和子级
      // console.log(exceptItself);
      this.toggleOtheChildren(exceptItself);
    },
    toggleOtheChildren(exceptItself) {
      if (!exceptItself) return;
      exceptItself.forEach((val) => {
        this.$set(val, 'value', 'N');
        if (val.customerClueItemList && val.customerClueItemList[0]) {
          this.$set(val.customerClueItemList[0], 'searchValue', null);
          if (
            val.customerClueItemList[0] &&
            val.customerClueItemList[0].customerClueOptionList.length
          ) {
            this.toggleOtheChildren(val.customerClueItemList[0].customerClueOptionList);
          }
        }
      });
    },
    radioClick(event) {
      // console.log(event);
    },
  },
};
</script>
<style lang="scss">
.radioGroup {
  font-size: 15px;
  .van-radio {
    padding: 5px 0;
  }
  .van-radio-group {
    padding-left: 20px;
  }
  .van-cell {
    padding: 10px 0;
    /* font-size: 14px; */
  }
  .van-cell::after {
    border: 0;
  }
  .van-field {
    padding: 0;
    width: 100%;
    border-radius: 4px;
    overflow: hidden;
    background-color: unset;
    height: 30px;
    line-height: 30px;
    border: 1px solid #cdc8c8;
  }
  .van-field__control {
    /* padding: 0 10px; */
    /* margin: 5px 0; */
    padding-left: 10px;
  }
  .van-radio__label {
    /* font-size: 14px; */
  }
  .van-f-red {
    font-size: 14px;
  }
  .rulesClass {
    border: 1px solid #ff0505;
  }
  .fieldInput {
    /* height: 38px; */
  }
  .rulesErrorMessage {
    color: red;
    font-size: 12px;
    padding: 3px 0;
  }
}
</style>
