<template>
  <section>
    <div style="padding: 5px; text-align: center">
      <img :src="logo" style="width: auto; height: 35px" alt="logo" />
    </div>
    <div style="margin: 10px 15px 10px 15px">
      <el-steps :active="stepActive" finish-status="success">
        <el-step
          v-for="(item, index) in stepArray"
          :key="index"
          title=""
        ></el-step>
      </el-steps>
    </div>
    <el-form
      ref="form"
      label-position="top"
      :model="form"
      :rules="rules"
      label-width="100px"
      style="padding: 16px"
    >
      <healthy-form1 v-show="stepArray[0]" :form.sync="form"></healthy-form1>
      <healthy-form2 v-show="stepArray[1]" :form.sync="form"></healthy-form2>
      <healthy-form3 v-show="stepArray[2]" :form.sync="form"></healthy-form3>
      <healthy-form4 v-show="stepArray[3]" :form.sync="form"></healthy-form4>
      <healthy-form5 v-show="stepArray[4]" :form.sync="form"></healthy-form5>
      <healthy-form6 v-show="stepArray[5]" :form.sync="form"></healthy-form6>
      <healthy-form7 v-show="stepArray[6]" :form.sync="form"></healthy-form7>
      <healthy-form8 v-show="stepArray[7]" :form.sync="form"></healthy-form8>
      <healthy-form9
        v-show="stepArray[8]"
        ref="fileForm"
        @addOrEditHealthy="addCustomerHealthy()"
        :form.sync="form"
      ></healthy-form9>
      <el-form-item style="text-align: center; margin: 30px auto">
        <el-button
          @click="nextStep(-1)"
          style="margin-right: 10px; width: 40%"
          v-show="stepActive != 0"
          >上一步</el-button
        >
        <el-button
          type="primary"
          @click="nextStep(1)"
          style="width: 40%"
          v-show="stepActive != stepArray.length - 1"
          >下一步</el-button
        >
        <el-button
          type="primary"
          @click="submit()"
          style="width: 40%"
          v-show="stepActive == stepArray.length - 1"
          >提交数据</el-button
        >
      </el-form-item>
    </el-form>
  </section>
</template>
<script>
import {
  getDictData,
  addCustomerHealthy,
  physicalSignsList,
  getCustomerBaseMessage,
} from "@/api/custom/customerInvestigation";
import * as healthyData from "@/utils/healthyData";
const logo = require("@/assets/logo/st_logo.png");
import Form1 from "@/components/HealthyForm/Form1";
import Form2 from "@/components/HealthyForm/Form2";
import Form3 from "@/components/HealthyForm/Form3";
import Form4 from "@/components/HealthyForm/Form4";
import Form5 from "@/components/HealthyForm/Form5";
import Form6 from "@/components/HealthyForm/Form6";
import Form7 from "@/components/HealthyForm/Form7";
import Form8 from "@/components/HealthyForm/Form8";
import Form9 from "@/components/HealthyForm/Form9";
export default {
  name: "index",
  data() {
    return {
      //客户是否存在标识
      customerExistFlag: false,
      healthyData: healthyData,
      logo,
      submitFlag: false,
      stepArray: [true, false, false, false, false, false, false, false, false],
      stepActive: 0,
      form: {
        customerEncId: null,
        name: null,
        phone: null,
        conditioningProjectId: 0,
        sex: 1,
        age: null,
        tall: null,
        weight: null,
        condiment: ["1", "2", "3"],
        otherCondiment: null,
        cookingStyle: ["8", "9", "4", "11"],
        cookingStyleRate: [1, 1, 1, 1, 1, 1],
        washVegetablesStyle: ["2"],
        otherWashVegetablesStyle: null,
        breakfastType: "2",
        breakfastFood: null,
        lunchType: ["3"],
        dinner: ["2"],
        vegetableRate: 5,
        commonMeat: null,
        dinnerTime: "19:00",
        supperNum: 1,
        supperFood: null,
        dietHotAndCold: "3",
        dietFlavor: ["1", "2"],
        vegetablesNum: 1,
        vegetablesRateType: "3",
        fruitsNum: 1,
        fruitsTime: "2",
        fruitsRate: "2",
        riceNum: 1,
        riceFull: 8,
        eatingSpeed: "3",
        snacks: ["1"],
        otherSnacks: null,
        healthProductsFlag: 0,
        healthProductsBrand: null,
        healthProductsName: null,
        healthProductsWeekRate: 0,
        healthProductsDayRate: 0,

        waterNum: 1500,
        waterType: ["3"],
        waterHabit: ["5"],
        drinksNum: [0, 0, 0, 0, 0, 0, 0, 0],
        drinkWineFlag: "3",
        drinkWineClassify: ["3"],
        otherWineClassify: null,
        drinkWineAmount: [0, 0, 0],
        smokeFlag: 0,
        smokeRate: [0, 0, 0],
        secondSmoke: 0,
        workIndustry: null,
        workType: ["2"],
        defecationNum: 1,
        otherDefecationNum: 0,
        defecationTime: ["1"],
        defecationShape: null,
        defecationSmell: null,
        defecationSpeed: null,
        defecationColor: null,

        motionNum: 3,
        motionDuration: 40,
        motionTime: "08:00",
        //motionMode:"有氧",
        aerobicMotionClassify: ["2"],
        anaerobicMotionClassify: [],
        anaerobicAerobicMotionClassify: [],
        otherMotionClassify: null,
        motionField: ["1"],
        otherMotionField: null,

        sleepTime: "23:00",
        sleepQuality: ["2"],
        sleepDrugFlag: 0,
        sleepDrug: null,
        stayupLateFlag: 0,
        stayupLateWeekNum: 0,

        physicalSignsId: [],
        otherPhysicalSigns: null,
        bloodData: [],
        moistureDate: [],
        familyIllnessHistory: [],
        otherFamilyIllnessHistory: null,
        operationHistory: [],
        otherOperationHistory: null,
        nearOperationFlag: 0,
        recoveryeSituation: null,
        longEatDrugFlag: 0,
        longEatDrugClassify: [],
        otherLongEatDrugClassify: null,
        allergyFlag: 0,
        allergySituation: null,
        allergen: [],
        otherAllergen: null,
        medicalReport: [],
        medicalReportName: [],
        position: 0,
        experience: null,
        rebound: 1,
        difficulty: null,
        crux: 1,
        dishesIngredient: null,
        makeFoodType: 3,
      },
      timer: null,
      rules: {
        sex: [{ required: true, trigger: "blur", message: "请选择性别" }],
        age: [
          { required: true, trigger: "blur", message: "请填写年龄" },
          {
            required: true,
            trigger: "blur",
            pattern: /^[1-9]\d*$/,
            message: "年龄格式不正确",
          },
        ],
        tall: [
          { required: true, trigger: "blur", message: "请填写身高" },
          {
            required: true,
            trigger: "blur",
            pattern: /^[1-9]\d*$/,
            message: "身高格式不正确",
          },
        ],
        weight: [
          { required: true, trigger: "blur", message: "请填写体重" },
          {
            required: true,
            trigger: "blur",
            pattern: /^(\d+)(\.\d{1})?$/,
            message: "体重格式不正确",
          },
        ],
        conditioningProjectId: [
          { required: true, trigger: "blur", message: "请选择调理项目" },
        ],
        position: [
          { required: true, trigger: "blur", message: "请选择地理位置" },
        ],
      },
    };
  },
  components: {
    "healthy-form1": Form1,
    "healthy-form2": Form2,
    "healthy-form3": Form3,
    "healthy-form4": Form4,
    "healthy-form5": Form5,
    "healthy-form6": Form6,
    "healthy-form7": Form7,
    "healthy-form8": Form8,
    "healthy-form9": Form9,
  },
  methods: {
    //根据用户ID获取用户基本信息(手机号、姓名)
    getCustomerBase(id) {
      if (id == null || id == undefined) {
        return;
      }
      getCustomerBaseMessage(id)
        .then((response) => {
          if (response.code === 200) {
            if (response.data) {
              this.customerExistFlag = true;
              this.form.name = response.data.name;
              this.form.phone = response.data.phone;
            }
          }
        })
        .catch(function () {
          console.log("error");
        });
    },
    submit() {
      if (this.submitFlag) {
        this.$message({
          message: "请勿重复提交,1分钟后重试",
          type: "warning",
        });
        return;
      }
      this.$refs.form.validate((valid) => {
        if (valid) {
          this.submitFlag = true;
          this.timer = setTimeout(this.fail, 1000 * 60);
          this.$refs.fileForm.uploadFile();
        } else {
          this.$message({
            message: "数据未填写完整",
            type: "warning",
          });
        }
      });
    },
    addCustomerHealthy() {
      //数据处理
      let cusMessage = Object.assign({}, this.form);
      this.healthyData["arrayName"].forEach(function (item, index) {
        cusMessage[item] =
          cusMessage[item] != null ? cusMessage[item].join(",") : null;
      });
      addCustomerHealthy(cusMessage)
        .then((response) => {
          if (response.code === 200) {
            this.$notify({
              title: "提交成功",
              message: "",
              type: "success",
            });
          }
        })
        .catch(function () {
          console.log("error");
        });
    },
    fail() {
      // console.log("定时--------");
      this.submitFlag = false;
    },
    nextStep(step) {
      if (!this.customerExistFlag) {
        this.$message.error("客户不存在");
        return;
      }
      this.$refs.form.validate((valid) => {
        if (valid || step < 0) {
          this.stepArray[this.stepActive] = false;
          this.stepActive = this.stepActive + step;
          this.stepArray[this.stepActive] = true;
          this.goTop();
        } else {
          this.$message({
            message: "数据未填写完整",
            type: "warning",
          });
        }
      });
    },
    goTop() {
      window.scroll(0, 0);
    },
  },
  created() {
    this.form.customerEncId = this.$route.params.id;
    this.getCustomerBase(this.form.customerEncId);
  },
  beforeCreate() {
    document.title = this.$route.meta.title;
  },
};
</script>

 <style scoped>
.el-form-item {
  margin-bottom: 8px;
}

.p_title_1 {
  font-size: 18px;
  font-weight: bold;
  margin-top: 30px;
}
.p_title_2 {
  font-size: 16px;
  font-weight: bold;
  margin-top: 30px;
}
.p_title_3 {
  font-size: 14px;
  font-weight: bold;
  margin-top: 30px;
}
.margin-left {
  margin-left: 14px;
}
.el-input__inner {
  width: 30%;
}
.margin-top-10 {
  margin-top: 10px;
}
.width-50-left-8-right-5 {
  width: 50%;
  margin-left: 8px;
  margin-right: 5px;
}
.width-70-left-8-right-5 {
  width: 70%;
  margin-left: 8px;
  margin-right: 5px;
}
</style>