import {
  checkRange,
  checkIsInteger,
  checkNumberIsToFixed,
} from '@/utils/followup/followupUtils/checkField'

export default ($this) => {
  return [
    {
      formType: 'input',
      className: 'float-none',
      prop: 'systolicBloodPressure',
      model: 'systolicBloodPressure',
      label: '收缩压SBP：',
      disabled: false,
      placeholder: '请输入',
      spanNum: 8,
      type: 'number',
      labmsg: '次',
      slots: [{ name: 'mmHg', type: 'append' }],
      rules: [
        {
          required: true,
          message: '请输入收缩压SBP',
          trigger: ['submit', 'change'],
        },
        { validator: checkRange, trigger: ['submit', 'change'] },
        { validator: checkIsInteger, trigger: ['submit', 'change'] },
      ],
    },
    {
      formType: 'input',
      className: 'float-none',
      prop: 'diastolicBloodPressure',
      model: 'diastolicBloodPressure',
      label: '舒张压DBP：',
      disabled: false,
      placeholder: '请输入',
      spanNum: 8,
      type: 'number',
      labmsg: '次',
      slots: [{ name: 'mmHg', type: 'append' }],
      rules: [
        {
          required: true,
          message: '请输入舒张压DBP',
          trigger: ['submit', 'change'],
        },
        { validator: checkRange, trigger: ['submit', 'change'] },
        { validator: checkIsInteger, trigger: ['submit', 'change'] },
      ],
    },
    {
      formType: 'input',
      className: 'float-none',
      prop: 'bodyHeight',
      model: 'bodyHeight',
      label: '身高：',
      disabled: false,
      placeholder: '请输入',
      spanNum: 8,
      type: 'number',
      labmsg: '次',
      slots: [{ name: 'cm', type: 'append' }],
      rules: [
        {
          required: true,
          message: '请输入身高',
          trigger: ['submit', 'change', 'blur'],
        },
        { validator: checkRange, trigger: ['submit', 'change', 'blur'] },
        { validator: checkIsInteger, trigger: ['submit', 'change', 'blur'] },
      ],
      changeFun: (val) => {
        $this.addComponents.forEach((item, index) => {
          if (item.name == 'hypeDataSourceSign') {
            $this.addComponents[index].formObject.bodyHeight = val
          }
        })
      },
      blurFunc: () => {
        $this.addComponents.forEach((item, index) => {
          if (item.name == 'hypeDataSourceSign') {
            let bodyWeight = $this.addComponents[index].formObject.bodyWeight
            let bodyHeight = $this.addComponents[index].formObject.bodyHeight
            if (bodyWeight && bodyHeight) {
              bodyWeight = parseFloat(bodyWeight)
              bodyHeight = parseFloat(bodyHeight)
              let bmi = (bodyWeight / Math.pow(bodyHeight / 100, 2)).toFixed(1)
              $this.addComponents[index].formObject.bmi = bmi
            }
          }
        })
      },
    },
    // 体质指数（BMI）=体重（kg）÷ 身高²（m）
    {
      formType: 'input',
      className: 'float-none',
      prop: 'bodyWeight',
      model: 'bodyWeight',
      label: '体重：',
      disabled: false,
      placeholder: '请输入（体重可以带1位小数点）',
      spanNum: 8,
      type: 'number',
      labmsg: '次',
      slots: [{ name: 'kg', type: 'append' }],
      rules: [
        {
          required: true,
          message: '请输入体重',
          trigger: ['submit', 'change'],
        },
        { validator: checkRange, trigger: ['submit', 'change'] },
        { validator: checkNumberIsToFixed, trigger: ['submit', 'change'] },
      ],
      changeFun: (val) => {
        $this.addComponents.forEach((item, index) => {
          if (item.name == 'hypeDataSourceSign') {
            $this.addComponents[index].formObject.bodyWeight = val
          }
        })
      },
      blurFunc: () => {
        $this.addComponents.forEach((item, index) => {
          if (item.name == 'hypeDataSourceSign') {
            let bodyWeight = $this.addComponents[index].formObject.bodyWeight
            let bodyHeight = $this.addComponents[index].formObject.bodyHeight
            if (bodyWeight && bodyHeight) {
              bodyWeight = parseFloat(bodyWeight)
              bodyHeight = parseFloat(bodyHeight)
              let bmi = (bodyWeight / Math.pow(bodyHeight / 100, 2)).toFixed(1)
              $this.addComponents[index].formObject.bmi = bmi
            }
          }
        })
      },
    },
    {
      formType: 'input',
      className: 'float-none',
      prop: 'bmi',
      model: 'bmi',
      label: 'BMI（系统自动生成）：',
      disabled: true,
      placeholder: '（这里是自动计算所得）',
      spanNum: 8,
      type: 'number',
      labmsg: '次',
      slots: [{ name: 'kg/m^2', type: 'append' }],
    },
    {
      formType: 'input',
      className: 'float-none',
      prop: 'nextBodyWeight',
      model: 'nextBodyWeight',
      label: '下次履约体重：',
      disabled: false,
      placeholder: '请输入（体重可以带1位小数点）',
      spanNum: 8,
      type: 'number',
      labmsg: '次',
      slots: [{ name: 'kg', type: 'append' }],
      rules: [
        {
          required: true,
          message: '请输入下次履约体重',
          trigger: ['submit', 'change'],
        },
        { validator: checkRange, trigger: ['submit', 'change'] },
        { validator: checkNumberIsToFixed, trigger: ['submit', 'change'] },
      ],
      changeFun: (val) => {
        $this.addComponents.forEach((item, index) => {
          if (item.name == 'hypeDataSourceSign') {
            $this.addComponents[index].formObject.nextBodyWeight = val
          }
        })
      },
      blurFunc: () => {
        $this.addComponents.forEach((item, index) => {
          if (item.name == 'hypeDataSourceSign') {
            let nextBodyWeight =
              $this.addComponents[index].formObject.nextBodyWeight
            let bodyHeight = $this.addComponents[index].formObject.bodyHeight
            if (nextBodyWeight && bodyHeight) {
              nextBodyWeight = parseFloat(nextBodyWeight)
              bodyHeight = parseFloat(bodyHeight)
              let nextBmi = (
                nextBodyWeight / Math.pow(bodyHeight / 100, 2)
              ).toFixed(1)
              $this.addComponents[index].formObject.nextBmi = nextBmi
            }
          }
        })
      },
    },
    {
      formType: 'input',
      className: 'float-none',
      prop: 'nextBmi',
      model: 'nextBmi',
      label: '下次履约BMI（系统自动生成）：',
      disabled: true,
      placeholder: '（这里是自动计算所得）',
      spanNum: 8,
      type: 'number',
      labmsg: '次',
      slots: [{ name: 'kg/m^2', type: 'append' }],
    },
    {
      formType: 'input',
      className: 'float-none',
      prop: 'heartRate',
      model: 'heartRate',
      label: '心率：',
      disabled: false,
      placeholder: '请输入',
      spanNum: 8,
      type: 'number',
      labmsg: '次',
      slots: [{ name: '次/分钟', type: 'append' }],
      rules: [
        {
          required: true,
          message: '请输入心率',
          trigger: ['submit', 'change'],
        },
        { validator: checkRange, trigger: ['submit', 'change'] },
        { validator: checkIsInteger, trigger: ['submit', 'change'] },
      ],
    },
    {
      formType: 'input',
      className: 'float-none',
      prop: 'remark',
      model: 'remark',
      disabled: false,
      label: '其他',
      placeholder: '请输入其他体征',
      spanNum: 12,
      maxlength: 30,
      type: 'text',
      labmsg: '',
      rules: [
        {
          required: false,
          message: '请输入其他体征',
          trigger: ['submit', 'change'],
        },
      ],
    },
  ]
}
