k94314517
2024-07-25 a75b18a4157ab486e0b51c438ac165ab3a08e3e0
wechat_jiaxuan/pages/calculator/index.js
@@ -1,6 +1,7 @@
// pages/calculator/index.js
// import { imageUrl } from '../../utils/config'
// import { calculatorOption, calculatorSave, decodePhone, bindPhone } from '../../api/index'
import { getBjParamConfig, saveRenovationCalculator, getDictData, getWxMiniPhone, binDingPhone } from '../../api/index'
// import Ls from '../../utils/storage'
// let ls = new Ls
Page({
@@ -9,7 +10,7 @@
   * 页面的初始数据
   */
  data: {
    // background: imageUrl + 'calculator/background.jpg',
    background: '',
    userPhone: '',
    type: '',
    info: '',
@@ -20,7 +21,8 @@
      '一室一厅', '两室一厅', '两室两厅', '三室两厅',
      '四室两厅', '五室两厅及以上'
    ],
    calculatorOptions: [],
    calculatorOptions: {},
    activeList: [],
    showPopup: false,
    activePicker: '',
    pickerIndex: 0,
@@ -29,7 +31,14 @@
    containerContentStyle: 'hidden;'
  },
  // 返回上一页
  onLoad: function (options) {
    let that = this
    this.getCalculatorOption()
    const userInfo = wx.getStorageSync('member')
    if (userInfo.phone) {
      that.setData({ userPhone: userInfo.phone })
    }
  },
  navigateBack () {
    wx.navigateBack({
      delta: 1,
@@ -71,87 +80,101 @@
    let { activePicker, pickerIndex } = this.data
    this.setData({ [activePicker]: pickerIndex, showPopup: false })
  },
  // 获取用户手机号
  getPhoneNumber (e) {
    // console.log(e)
    let that = this
    decodePhone({ code: e.detail.code })
      .then(res => {
        if (res.phone === undefined || res.phone.length === null || !res.phone) {
          wx.showToast({
            title: res.msg,
            icon: 'none'
          })
        } else {
          bindPhone({ phone: res.phone })
            .then(newInfo => {
              ls.set('userInfo', newInfo.member)
              that.setData({ userPhone: res.phone })
              that.submit()
            })
    const data = { ...e.detail }
    getWxMiniPhone({
      encryptedData: data.encryptedData,
      iv: data.iv,
      sessionKey: wx.getStorageSync('sessionKey') || data.iv,
    }).then(res => {
      binDingPhone({
        phone: res.data
      }).then((res) => {
        if(res.code == 200){
          wx.setStorageSync('member', res.data)
          this.submit()
        }
      })
    })
  },
  // 立即计算
  submit () {
    // console.log('立即计算')
    let { userPhone } = this.data
    ls.get('userInfo').then(res => {
      // console.log(res)
      if (userPhone) {
        let { type, info, area, money, typeArray, infoArray, calculatorOptions: options } = this.data
        let submitData = {}
        submitData.name = res.name
        submitData.phone = res.phone
        if (type === '') {
          wx.showToast({
            title: '请选择房屋类型',
            icon: 'none'
          })
          return false
        }
        if (info === '') {
          wx.showToast({
            title: '请选择户型信息',
            icon: 'none'
          })
          return false
        }
        if (area === '') {
          wx.showToast({
            title: '请输入房屋面积',
            icon: 'none'
          })
          return false
        }
        if (money === '') {
          wx.showToast({
            title: '请输入装修预算',
            icon: 'none'
          })
          return false
        }
        submitData = ['房屋类型:' + typeArray[type], '户型信息:' + infoArray[info], '房屋面积:' + area + '㎡', '装修预算:' + money + '万元'].join('-')
        for (let i in options) {
          options[i].money = (money * options[i].rate / 100).toFixed(2)
          let childList = options[i].childList
          for(let j in childList) {
            childList[j].money = (money * childList[j].rate / 100).toFixed(2)
          }
        }
        this.setData({ calculatorOptions: options, showResultMoney: true, containerContentStyle: 'auto' })
        this.submitCalculatorResult(submitData)
    const res = wx.getStorageSync('member')
    if (userPhone) {
      let { type, info, area, money, typeArray, infoArray, calculatorOptions } = this.data
      let submitData = {}
      submitData.name = res.name
      submitData.phone = res.phone
      if (type === '') {
        wx.showToast({
          title: '请选择房屋类型',
          icon: 'none'
        })
        return false
      }
      if (info === '') {
        wx.showToast({
          title: '请选择户型信息',
          icon: 'none'
        })
        return false
      }
      if (area === '') {
        wx.showToast({
          title: '请输入房屋面积',
          icon: 'none'
        })
        return false
      }
      if (money === '') {
        wx.showToast({
          title: '请输入装修预算',
          icon: 'none'
        })
        return false
      }
    })
      // submitData = ['房屋类型:' + typeArray[type], '户型信息:' + infoArray[info], '房屋面积:' + area + '㎡', '装修预算:' + money + '万元'].join('-')
      let activeList = type == '0' ? [...calculatorOptions.exquisiteList] : [...calculatorOptions.roughList]
      activeList.forEach(item => {
        item.money = (money * item.rate / 100).toFixed(1)
        if(item.children && item.children.length > 0){
          item.children.forEach(child => {
            child.money = (money * child.rate / 100).toFixed(2)
          })
        }
      })
      console.log('activeList', activeList);
      saveRenovationCalculator({
        area,
        budget: money,
        houseStatus: type,
        houseType: info
       }).then(res => {
        // console.log(res)
        if (res.success) {
          wx.showToast({
            title: '计算成功',
            icon: 'none'
          })
        } else {
          console.log(res.msg)
        }
      })
      this.setData({ activeList, showResultMoney: true, containerContentStyle: 'auto' })
    }
  },
  // 提交计算结果
  submitCalculatorResult (data) {
    calculatorSave({ info: data }).then(res => {
    saveRenovationCalculator({ info: data }).then(res => {
      // console.log(res)
      if (res.success) {
        wx.showToast({
@@ -166,27 +189,16 @@
  // 获取计算器配置
  getCalculatorOption () {
    calculatorOption().then(res => {
    getBjParamConfig().then(res => {
      this.setData({ calculatorOptions: res.data })
    })
    getDictData({
      code: 'WEIXIN_DEFAULT_IMGS',
      label: 'JISUAN_BG'
    }).then(res => {
      this.setData({ background: res.data.code })
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let that = this
    // this.getCalculatorOption()
    // ls.get('userInfo').then(res => {
    //   if (res.phone) {
    //     that.setData({ userPhone: res.phone })
    //   }
    // })
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
  },