create-wish.js 7.2 KB
import {
  getBindtapData
} from '../../utils/util';

import {
  productMap
} from '../../const/custom-data';

let app = getApp();
Page({
  data: {
    tipsBorderVisible: false,
    tipsRegisterVisible: false,
    tipsGroupMemberVisible: false,
    tipsNewMemberVisible: false,
    tipsWishVisible: false,
    tipsShakeVisible: false,
    tipsCreateCompleteVisible: false,
    tipsCommonVisible: false,
    tipsInnerText: "",
    curStatus: 1, // 当前场景
    candidate: [], // 心愿候选列表
    myWishList: [], // 我的心愿列表
    valElasticTotal: 0, // 心愿单累计需要弹力值
    curWish: {}, // 当前选择心愿
    userInfo: {}
  },
  onShareAppMessage() {},
  onLoad(options) {
    console.log("cwish------");
    this.initData();
  },
  initData() {
    // 还原缓存心愿单
    let myWishList = app.store.getItem("wish") || [];
    this.setData({
      myWishList
    })

    app.queryIndex().then((result) => {
      this.setData({
        userInfo: app.globalData.userInfo
      })
      this.queryWishbillPrizeCandidate();
    });
  },

  /**
   * 提交前判断状态
   * 判断顺序
   * 1.crm登陆
   * 2.黑名单 (团购会员)
   * 3.新会员
   *
   */
  checkSubmit() {
    return new Promise((resolve, reject) => {
      let indexInfo = app.globalData.indexInfo;
      let {
        isCrmLogin,
        isNewMember,
        isBlackList,
        hadAnswerQuestion,
        isSelfAssist,
        wishBillCode
      } = indexInfo;
      // 未登陆 出注册弹窗提示
      // isCrmLogin = 1;
      if (isCrmLogin == 0) {
        this.setData({
          tipsRegisterVisible: true
        })
        reject();
        return;
      }
      // 黑名单
      if (isBlackList == 1) {
        this.setData({
          tipsGroupMemberVisible: true
        })
        reject();
        return;
      }
      // 新老会员
      // isNewMember
      // hadAnswerQuestion = 1; //硬编码答题
      if (isNewMember == 1) {
        // 新会员
        if (hadAnswerQuestion) {
          // 已经答题,提示创建心愿单
          resolve();
        } else {
          // 未答题,提示答题
          this.setData({
            tipsNewMemberVisible: true
          })
          reject();
        }
      } else {
        // 老会员 直接答题
        resolve();
      }
    });
  },
  /**
   * 点击提交心愿单按钮
   * 首先要根据自身状态判断
   */
  onSubmitHandler() {
    this.checkSubmit().then((result) => {
      let myWishList = this.data.myWishList;
      let valElasticTotal = 0;
      myWishList.forEach(element => {
        valElasticTotal += element.conditionElasticValue
      });

      this.setData({
        tipsWishVisible: true,
        valElasticTotal: valElasticTotal
      })
      console.log("wish:", this.data.myWishList);
    }).catch((err) => {});;
  },
  // billCode
  // 创建心愿单
  queryWishbillCreate() {
    console.log("queryWishbillCreate");
    // let myWishList = this.data.candidate;
    // console.log("this.data.candidate:",this.data.candidate);
    // console.log("myWishList:",myWishList);
    // let myWishList = this.data.myWishList;
    let myWishList = this.data.candidate[0].products;

    let wishBillCodeList = [];
    myWishList.forEach(element => {
      wishBillCodeList.push(element.prizeDefineCode);
    });
    console.log("wishBillCodeList:", wishBillCodeList);
    app.post({
      url: app.api.wishbillCreate,
      data: ["ee3e985407fd40abb22b5f75f0f489a1", "5e46119a5ad04649815b7c0171fd7e9a", "1301a7070b57433986a12ee982103b71"]
    }).then((result) => {
      console.log("创建成功")
      console.log("result:", result);
    }).catch((err) => {
      console.log("err:", err);
    });
  },
  /**
   * 点击圆点 显示产品提示
   * @param {*} evt
   */
  onShowTipsBorderHandler(evt) {
    let curIndex = getBindtapData(evt, "index");
    console.log("curIndex:", curIndex);
    let curData = productMap[curIndex + ""];
    let product = this.getProductByCode(curIndex);
    curData = Object.assign(curData, product)
    console.log("product:", product);
    console.log("curData:", curData);
    this.setData({
      curWish: curData,
      tipsBorderVisible: true,
    });
  },
  /**
   * 隐藏产品提示
   * @param {*} evt
   */
  onHideTipsBorderHandler(evt) {
    console.log("onHideTipsBorderHandler");
    this.setData({
      // curWish: null,
      tipsBorderVisible: false,
    })
  },
  /**
   * 加入心愿单
   * @param {*} evt
   */
  onAddWishHandler(evt) {
    let myWishList = this.data.myWishList;
    let curWish = this.data.curWish;

    // 检查愿望数是否超出
    if (myWishList.length >= 3) {
      this.setData({
        tipsInnerText: "许愿数超出上限啦~",
        tipsCommonVisible: true
      })
      return;
    }

    // // 查重
    let uni = myWishList.some((item) => {
      return item.prizeDefineCode == curWish.prizeDefineCode
    })
    if (uni) {
      this.setData({
        tipsInnerText: "心愿重复啦~",
        tipsCommonVisible: true
      })
      return;
    }

    // 写入愿望单
    myWishList.push(curWish);
    this.setData({
      myWishList
    })
    app.store.setItem("wish", myWishList);
  },
  /**
   * 取消心愿单
   * @param {*} evt
   */
  onCancelWishHandler(evt) {
    let curData = getBindtapData(evt);
    console.log("curData:", curData);
    let myWishList = this.data.myWishList;
    myWishList = myWishList.filter((item) => {
      return item.prizeDefineCode != curData.prizeDefineCode
    })
    console.log("myWishList:", myWishList);
    this.setData({
      myWishList
    })
    app.store.setItem("wish", myWishList);
  },
  /**
   * 换一批
   * @param {*} evt
   */
  onChangeStatusHandler(evt) {
    let curStatus = this.data.curStatus;
    curStatus++;
    if (curStatus > 3) {
      curStatus = 1;
    }
    this.setData({
      curStatus: curStatus,
      tipsBorderVisible: false
    })
  },
  /**
   * 根据唯一码/code 索引
   */
  getProductByCode(code) {
    let result = null;
    let candidate = this.data.candidate;
    candidate.forEach(element => {
      if (element.prizeDefineCode == code) {
        result = element;
      }
    });
    return result;
  },
  // 心愿单产品候选列表
  queryWishbillPrizeCandidate() {
    return new Promise((resolve, reject) => {
      app.post({
        url: app.api.wishbillPrizeCandidate,
        data: {}
      }).then((result) => {
        this.setData({
          candidate: result
        })
        console.log("candidate:", this.data.candidate);
        resolve();
      }).catch((err) => {
        reject();
      });
    });
  },
  // 子组件事件
  evtcomp(evt) {
    let {
      name,
      data
    } = evt.detail;
    switch (name) {
      // 隐藏蒙层
      case "_evt_hide_mask":
        this.setData({
          ruleTipsVisible: false,
          tipsGroupMemberVisible: false,
          tipsNewMemberVisible: false,
          tipsWishVisible: false,
          tipsWishVisible: false,
          tipsCreateCompleteVisible: false,
          tipsCommonVisible: false
        })
        break;

        // 创建心愿单
      case "_evt_create_wish":
        this.setData({
          tipsWishVisible: false
        })
        this.queryWishbillCreate();
        break;

      default:
        break;
    }
  },
})