Bläddra i källkod

注册优化及设置LED开关

chaooo 1 år sedan
förälder
incheckning
4d1649a240

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 329 - 192
package-lock.json


+ 0 - 177
src/components/index/login.vue

@@ -1,177 +0,0 @@
-<template>
-  <div
-    id="index_login_container"
-    class="animation-slide-right"
-  >
-    <view class=" text-xl padding text-center">
-      <text class=" text-bold title_color">欢迎来到水母星球!</text>
-    </view>
-    <view class="text-df text-center slogen">在此将会体验到操控专注力的神奇感觉</view>
-    <div class="sub_slogen text-center">
-      现在,开始您的专注力旅程吧!
-    </div>
-
-    <div class="text-center padding-lr padding-top">
-      <button
-        class="cu-btn lg cu-btn-primary text-white text-center"
-        @click="to_regist(0)"
-        v-if="is_scan"
-      >注册
-      </button>
-      <button
-        class="cu-btn lg cu-btn-primary text-white text-center"
-        @click="to_scan"
-        v-else
-      >扫码注册
-      </button>
-    </div>
-    <view class="text-center slogen_title">
-      <text class="text-gray">如果您在我们实体店,请在店员的指导下连接水母智脑机</text>
-    </view>
-    <view
-      class="text-center text-lg padding-lr"
-      @click="to_regist(1)"
-    >
-      <text class="text-gray under_line">账号登录</text>
-    </view>
-    <van-toast id="van-toast"/>
-    <van-dialog id="van-dialog"/>
-
-  </div>
-</template>
-<script>
-import Toast from "../../../static/vant/toast/toast";
-import Dialog from "../../../static/vant/dialog/dialog";
-import user_store from "@/store/index";
-import {userCheckInvite, userCheckUnionid} from "../../requests/user";
-
-var $this;
-export default {
-  name: "login_container",
-  data() {
-    return {
-      is_scan: false,
-      official_show: false,
-    };
-  },
-  methods: {
-    to_regist($status) {
-      this.$emit("changeStatus", "regist");
-      this.$emit("changeTitle", $status);
-    },
-    to_scan() {
-      wx.scanCode({
-        onlyFromCamera: true,
-        success(res) {
-          let $data = res;
-          if ($data.result) {
-            let url = decodeURIComponent($data.result);
-            let $code = url.match(/\?code=(.*)/);
-            if (url.indexOf('jellyfish') != -1) {
-              Toast.fail('请先登录')
-              return false
-            } else {
-              // 邀请码
-              let $invite_code = $code[1]
-              $this.do_invite_code($invite_code)
-            }
-          }
-        },
-      });
-    },
-    //统一处理邀请码的方法
-    do_invite_code($code) {
-      $this.is_scan = true;
-      wx.login({
-        success(res1) {
-          let $js_code = res1.code;
-          console.log($js_code);
-          userCheckInvite($code, $js_code).then((res) => {
-            let $res = res.data;
-            if ($res.code != 0) {
-              Toast.fail($res.errmsg);
-            }
-          });
-        },
-      });
-      user_store.setters.set_invite_code($code);
-    },
-    official_success($e) {
-      console.log("关注组件加载成功", $e);
-    },
-    onClickHide() {
-      $this.official_show = false;
-    },
-  },
-  mounted() {
-    mpvue.login({
-      success($res) {
-        let $js_code = $res.code;
-        user_store.setters.setJsCode($js_code);
-        //检验js_code
-        userCheckUnionid($js_code).then((res) => {
-          let $res = res.data;
-          let $data = $res.data;
-          $this.official_show = $data["have_unionid"] == 2;
-        });
-      },
-    });
-  },
-  onLoad(options) {
-    let $this = this;
-    // 原有的code
-    let $_code = wx.getStorageSync("code");
-
-    if (options.q) {
-      let url = decodeURIComponent(options.q);
-      let $code = url.match(/\?code=(.*)/)[1];
-      $this.do_invite_code($code);
-      console.log("1---" + $_code, "2---" + $code);
-      //判断新的code 和 旧的code 是否一致 不一致则重新登录
-      if ($_code && $_code != $code) {
-        Toast.fail("该用户已绑定邀请码");
-      }
-    }
-    // 测试注释
-    else {
-      // 跳转到关于水母页面
-      //设置是否扫码
-      $this.is_scan = false;
-      Dialog.alert({
-        transition: "fade",
-        message:
-          "如需体验水母星球产品,请使用微信扫一扫水母星球邀请卡,注册水母星球会员",
-        theme: "round-button",
-      });
-    }
-  },
-  created() {
-    $this = this;
-  },
-};
-</script>
-<style>
-.sub_slogen {
-  font-size: 22px;
-  margin-top: 110px;
-  color: #4c4c4c;
-}
-
-/*扫码页*/
-.sub_slogen_sm {
-  font-size: 15px;
-  margin: 120px auto 0px;
-  color: #4c4c4c;
-}
-
-.slogen_title {
-  font-size: 11px;
-  padding: 8px 0px;
-}
-
-.official_container {
-  width: 300px;
-  margin: auto;
-  margin-top: 300px;
-}
-</style>

+ 0 - 552
src/components/index/personal.vue

@@ -1,552 +0,0 @@
-<template>
-  <div id="personal">
-    <!--    用户信息-->
-    <div
-      :class="{
-        userinfoYellow: userinfo.isActive,
-        userinfoGrey: userinfo.isntActive,
-      }"
-    >
-      <van-row class="padding">
-        <van-col span="3" offset="2">
-          <view
-            class="cu-avatar radius lg"
-            :style="'background-image:url(' + userinfo.portrait + ');'"
-          ></view>
-        </van-col>
-        <van-col span="12" offset="1">
-          <div class="flex flex-direction align-start justify-start">
-            <div>
-              <text class="text-black text-bold">{{ userinfo.user_name }}</text>
-            </div>
-            <div class="flex justify-between align-center">
-              <button
-                class="cu-btn sm round"
-                :class="{
-                  level_btn_yellow: userinfo.isActive,
-                  level_btn_grey: userinfo.isntActive,
-                }"
-              >
-                {{ userinfo.level_name }}
-              </button>
-              <view class="text-xs padding-left" v-if="userinfo.level == 11"
-                >有效期至 {{ userinfo["validity_time_formatted"] }}</view
-              >
-            </div>
-          </div>
-        </van-col>
-        <van-col span="5">
-          <view class="text" @click="to_user_center">
-            <text class="cuIcon-people"></text>
-            <text class="under_line">会员中心</text>
-          </view>
-        </van-col>
-      </van-row>
-      <van-row class="padding">
-        <view style="opacity: 1">
-          <van-col span="4" class="lg" offset="2">
-            <text class="cuIcon-selection"></text>
-            卡号:
-          </van-col>
-          <van-col span="8">
-            <text class="text-white text-bold text-lg">{{ invite_code }}</text>
-          </van-col>
-        </view>
-      </van-row>
-      <van-row>
-        <van-col span="6" offset="1">
-          <div class="flex flex-direction align-center">
-            <text class="text-xxl">{{ userinfo.play_time }}</text>
-            <text class="font-sm">可用时长(分钟)</text>
-          </div>
-        </van-col>
-        <van-col span="7" offset="2" @click="to_coupons">
-          <div class="flex flex-direction align-center">
-            <text class="text-xxl">{{ userinfo.coupon }}</text>
-            <text class="font-sm">已领券数量</text>
-          </div>
-        </van-col>
-        <van-col span="6" offset="2">
-          <div class="flex flex-direction align-center">
-            <text class="text-xxl">{{ userinfo.experience }}</text>
-            <text class="font-sm">次卡</text>
-          </div>
-        </van-col>
-      </van-row>
-    </div>
-
-    <view
-      class="text-center font-sm"
-      v-if="userinfo.level >= 3 && userinfo.level <= 7"
-    >
-      <text class="text-gray"
-        >今日专注力免费训练时长还有:
-        <text class="text-yellow">{{ userinfo.free_time }}</text>
-      </text>
-    </view>
-
-    <!--    会员日注册领券弹窗-->
-    <!-- <van-popup
-      :show="twenty&first"
-      :close-on-click-overlay="false"
-      custom-class="pop"
-      overlay
-      z-index="99"
-    >
-      <div class="quan_container padding-top-xl ">
-        <view class="margin-top-xl flex justify-center">
-            <text class="title" >水母会员次卡体验券1张</text>
-        </view>
-        <view class="flex justify-center margin-top">
-            <text class="text-xs">{{userinfo.certainTime}}&nbsp;当天领取有效</text>
-        </view>
-        <div class="flex justify-center margin-top" >
-            <view class="flex justify-center quan_container_lil">
-              <div style="display: flex;align-items: baseline">
-                <text class="experience time">{{ gift_time }}</text>
-                <text class="time_text margin-left-xs">次</text>
-              </div>  
-            </view>
-        </div>
-      </div>  
-      <view class="flex justify-center margin-top-xl">
-         <button class="cu-btn get_btn text-white" @click="get_ticket">领取</button>
-      </view>
-
-    </van-popup> -->
-
-    <!--    外发领券弹窗-->
-    <van-popup
-      :show="is_outShow"
-      :close-on-click-overlay="false"
-      custom-class="pop"
-      overlay
-      z-index="99"
-    >
-      <div class="quan_container padding-tb-xl">
-        <view class="margin-top-xl flex justify-center">
-          <text class="title">{{ outCouponData.name }}</text>
-        </view>
-        <view class="flex justify-center margin-top">
-          <text class="text-xs" v-if="outCouponData.validity_time.type == 1"
-            >{{
-              outCouponData.validity_time.time_format
-            }}&nbsp;之前领取有效</text
-          >
-          <text class="text-xs" v-else
-            >{{ outCouponData.validity_time.start_time_format }}&nbsp;至&nbsp;{{
-              outCouponData.validity_time.end_time_format
-            }}&nbsp;之前领取有效</text
-          >
-        </view>
-        <!-- 核销 -->
-        <view
-          class="flex justify-center margin-top"
-          v-if="outCouponData.type == 1"
-        >
-          <div class="flex justify-center quan_container_lil">
-            <div style="display: flex; align-items: baseline">
-              <text class="hexiao time margin-right-xs">{{
-                outCouponData.discount.time
-              }}</text>
-              <text class="time_text" v-if="outCouponData.discount.type == 0"
-                >分钟</text
-              >
-              <text class="time_text" v-else>次</text>
-            </div>
-          </div>
-        </view>
-        <!-- 满减 -->
-        <view
-          class="flex justify-center margin-top"
-          v-if="outCouponData.type == 2"
-        >
-          <div class="flex justify-center quan_container_lil">
-            <div style="display: flex; align-items: baseline">
-              <text class="time_text">满</text>
-              <text class="manjian time margin-lr-xs">{{
-                outCouponData.discount.full
-              }}</text>
-              <text class="time_text">减</text>
-              <text class="manjian time margin-left-xs">{{
-                outCouponData.discount.reduce
-              }}</text>
-            </div>
-          </div>
-        </view>
-        <!-- 折扣 -->
-        <view
-          class="flex justify-center margin-top"
-          v-if="outCouponData.type == 3"
-        >
-          <div class="flex justify-center quan_container_lil">
-            <div style="display: flex; align-items: baseline">
-              <text class="time_text">打</text>
-              <text class="discount time margin-lr-sm">{{
-                outCouponData.discount.discount * 10
-              }}</text>
-              <text class="time_text">折</text>
-            </div>
-          </div>
-        </view>
-        <!-- 随机 -->
-        <view
-          class="flex justify-center margin-top"
-          v-if="outCouponData.type == 4"
-        >
-          <div class="flex justify-center quan_container_lil">
-            <div style="display: flex; align-items: baseline">
-              <text class="time_text">随机</text>
-              <text class="random time margin-lr-xs">{{
-                outCouponData.discount.start
-              }}</text>
-              <text class="time_text">至</text>
-              <text class="random time margin-lr-xs">{{
-                outCouponData.discount.end
-              }}</text>
-              <text class="time_text">元</text>
-            </div>
-          </div>
-        </view>
-      </div>
-      <view class="flex justify-center margin-top-xl">
-        <button class="cu-btn get_btn text-white" @click="get_coupon">
-          领取
-        </button>
-      </view>
-    </van-popup>
-
-    <!--    窗口弹出-->
-    <van-popup :show="pop_show" @close="close_pop" round>
-      <div
-        class="err_container flex flex-direction align-center justify-around"
-      >
-        <view>
-          <text class="title"> 您当前剩余时间不足 </text>
-        </view>
-        <view>
-          <text class="sub-title"> 请充值后进行游戏 </text>
-        </view>
-        <img
-          src="https://img.shuimuai.com/web/sign_notimeJfish.png"
-          class="err_img"
-          alt=""
-        />
-        <button class="cu-btn lg bg-primary text-white" @click="to_recharge">
-          立即充值
-        </button>
-      </div>
-    </van-popup>
-    <van-toast id="van-toast" />
-  </div>
-</template>
-
-<script>
-import { userUpdateLoginTime } from "../../requests/user";
-import {
-  couponReceiveFirst,
-  couponReceiveFirstID,
-  outputCoupon,
-  couponReceive,
-  outCardCoupon,
-} from "../../requests/coupons";
-import Toast from "../../../static/vant/toast/toast";
-import { reload_userinfo } from "../../utils/user";
-import { timestampTwoNum } from "../../utils/index";
-import user_store from "@/store/index";
-
-var $this;
-export default {
-  name: "personal",
-  data() {
-    return {
-      userinfo: {
-        //判断是否第一次进入小程序 1为是第一次 0为非第一次
-      },
-      first: false,
-      pop_show: false,
-      receive: 0,
-      invite_code: false,
-      // twenty: false,
-      // 外发
-      output: false,
-      is_outShow: false,
-      outCouponData: {
-        type: Number,
-        validity_time: {
-          type: Number,
-        },
-        discount: {
-          type: Number,
-        },
-      },
-      // gift_time: Number
-    };
-  },
-  methods: {
-    //领取外发卡券
-    get_coupon() {
-      wx.setStorageSync("is_out", false);
-      couponReceive($this.outCouponData)
-        .then((res) => {
-          let $res = res.data;
-          if ($res.code == 0) {
-            Toast.success({
-              message: $res.errmsg,
-              duration: 800,
-              onClose() {
-                reload_userinfo($this);
-              },
-            });
-            $this.is_outShow = false;
-          } else {
-            Toast.fail({
-              message: $res.errmsg,
-              duration: 800,
-            });
-            $this.is_outShow = false;
-          }
-        })
-        .catch((err) => {
-          console.log("错误", err);
-        });
-    },
-    //修改第一次登录状态
-    close_pop() {
-      this.pop_show = false;
-    },
-    //跳转充值中心
-    to_recharge() {
-      mpvue.navigateTo({
-        url: "/pages/user_center/recharge/main",
-      });
-    },
-    //跳转用户中心
-    to_user_center() {
-      mpvue.navigateTo({
-        url: "/pages/user_center/main",
-      });
-    },
-    to_coupons() {
-      mpvue.navigateTo({
-        url: "/pages/coupons/main",
-      });
-    },
-    change_login_status() {
-      $this.$emit("change_login_status");
-    },
-    // 外发通用数据处理
-    handle_coupon_data(res) {
-      if (res.data.code == 0) {
-        let $newData = res.data.data;
-        $newData.validity_time["start_time_format"] = timestampTwoNum(
-          $newData.validity_time["start_time"]
-        );
-        $newData.validity_time["end_time_format"] = timestampTwoNum(
-          $newData.validity_time["end_time"]
-        );
-        $newData.validity_time["time_format"] = timestampTwoNum(
-          $newData.validity_time["time"]
-        );
-
-        $this.outCouponData = $newData;
-        console.log("外发数据:", $this.outCouponData);
-        $this.is_outShow = true;
-      } else {
-        wx.setStorageSync("is_out", false);
-        $this.output = false;
-      }
-    },
-    // 获取不同外发券
-    check_output_coupon() {
-      //外发
-      $this.output = wx.getStorageSync("is_out");
-      reload_userinfo($this);
-
-      //获取外发数据
-      if ($this.output == true) {
-        // 判断外发哪种券
-        if (wx.getStorageSync("is_other") == false) {
-          outputCoupon().then((res) => {
-            handle_coupon_data(res);
-          });
-        } else {
-          outCardCoupon().then((res) => {
-            handle_coupon_data(res);
-          });
-        }
-      }
-    },
-  },
-  mounted() {
-    $this.first = wx.getStorageSync("is_first");
-    $this.invite_code = wx.getStorageSync("code");
-
-    $this.check_output_coupon();
-
-    //判断是否每月20号
-    // let day = new Date().getDate();
-    // if (day == 20) {
-    //   wx.setStorageSync("is_twenty", true);
-    //   couponReceiveFirstID().then((res)=>{
-    //     console.log('体验次卡',res.data.data.discount.time)
-    //     $this.gift_time = res.data.data.discount.time
-    //   })
-    // } else {
-    //   wx.setStorageSync("is_twenty", false);
-    // }
-    // $this.twenty = wx.getStorageSync("is_twenty");
-    // console.log("可以领注册体验券吗", $this.first & $this.twenty);
-  },
-  onShow() {
-    $this.check_output_coupon();
-  },
-  created() {
-    $this = this;
-  },
-  onPullDownRefresh() {
-    reload_userinfo($this);
-  },
-};
-</script>
-
-
-<style scoped>
-.userinfoYellow {
-  background-image: url("https://img.shuimuai.com/huiyuankadiban.png");
-  background-position: center;
-  background-size: 100% 100%;
-  width: 99%;
-  height: 173px;
-  margin: 0px auto;
-}
-
-.userinfoGrey {
-  background-image: url("https://img.shuimuai.com/pic_grey.png");
-  background-position: center;
-  background-size: 100% 100%;
-  width: 99%;
-  height: 173px;
-  margin: 0px auto;
-}
-#personal {
-  width: 100%;
-  position: relative;
-  top: -95px;
-  z-index: 3;
-}
-
-.level_btn_yellow {
-  background-color: #e3a000;
-}
-
-.level_btn_grey {
-  background-color: #909090;
-}
-.jifen {
-  position: absolute;
-  top: 73px;
-}
-
-.font-sm {
-  font-size: 10px;
-}
-
-.quan_container {
-  background-image: url("https://img.shuimuai.com/pic_getCoupon2.png");
-  background-position: center;
-  background-size: 100% 100%;
-  width: 270px;
-  height: 235px;
-  padding-left: 5px;
-}
-.quan_container_lil {
-  background-image: url("https://img.shuimuai.com/pic_getCouponlil.png");
-  background-position: center;
-  background-size: 100% 100%;
-  width: 185px;
-  height: 56px;
-  display: flex;
-  align-items: center;
-}
-/*标题*/
-.quan_container .title {
-  font-size: 15px;
-  font-weight: bold;
-  color: #222222;
-  font-family: Microsoft YaHei;
-  margin: 6px 0 -5px 0;
-}
-
-/*副标题*/
-.quan_container .sub-title {
-  font-size: 10px;
-  font-weight: 400;
-  font-family: Microsoft YaHei;
-  color: #030000;
-}
-
-/*分钟数*/
-.quan_container .time {
-  font-weight: bold;
-  color: #6858c4;
-}
-.hexiao,
-.discount,
-.experience {
-  font-size: 36px;
-}
-.random {
-  font-size: 19px;
-}
-.manjian {
-  font-size: 24px;
-}
-/*分钟二字*/
-.quan_container .time_text {
-  font-size: 12px;
-  font-weight: 400;
-  color: #6858c4;
-}
-
-/* 领取按钮 */
-.get_btn {
-  width: 119px;
-  height: 31px;
-  background: #6858c4;
-  border-radius: 15px;
-}
-/*弹窗模块*/
-.err_container {
-  width: 260px;
-  height: 300px;
-  border-radius: 5px;
-}
-
-/*标题*/
-.err_container .title {
-  font-size: 20px;
-  font-weight: bold;
-  color: #4c4c4c;
-  line-height: 24px;
-}
-
-/*子标题*/
-.err_container .sub-title {
-  font-size: 12px;
-  font-family: Microsoft YaHei;
-  font-weight: 400;
-  color: #4b4b4b;
-  line-height: 24px;
-}
-
-.err_img {
-  width: 73px;
-  height: 83px;
-}
-</style>
-<style>
-.pop {
-  background-color: rgba(255, 255, 255, 0) !important;
-}
-</style>

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 102
src/components/index/regist.vue


+ 631 - 0
src/components/login.vue

@@ -0,0 +1,631 @@
+<script>
+import user_store from "@/store/index";
+import {reload_userinfo} from "../utils/user";
+import {userGetCode, userLogin, userRegister} from "@/requests/user";
+import Toast from "../../static/vant/toast/toast";
+
+let $this;
+export default {
+  name: "login",
+  props: ["sign"],
+  data() {
+    return {
+      phone: "",
+      captcha: "",
+      btn_disabled: true,
+      time_show: false,
+      time_count: 60,
+      protocol_show: false,
+      js_code: "",
+      userinfo: {
+        nickName: "",
+        avatarUrl: "",
+        gender: "",
+      },
+      auth_login: false,
+    };
+  },
+  watch: {
+    captcha($new, $old) {
+      if ($new.length == 6) {
+        wx.hideKeyboard();
+      }
+    },
+  },
+  methods: {
+    // 跳转到首页
+    backHome() {
+      this.$emit("welcomeStatus", 0);
+    },
+    // 校验手机号码和验证码
+    inputValidator() {
+      let $reg = /(13\d|14[579]|15[^4\D]|17[^49\D]|18\d|19\d|16\d)\d{8}/;
+      let $verify_reg = /\d{6}/;
+      $this.btn_disabled = !($reg.test($this.phone) && $verify_reg.test($this.captcha));
+    },
+    //获取验证码
+    getCaptchaCode() {
+      let $reg = /(13\d|14[579]|15[^4\D]|17[^49\D]|18\d|19\d|16\d)\d{8}/;
+      if ($reg.test($this.phone) === false) {
+        Toast.fail("请输入正确手机号");
+        return false;
+      }
+      // 打开倒计时
+      $this.openCountdown();
+      let $params
+      if ($this.sign * 1 === 1) {
+        // 注册验证码
+        $params = {
+          phone: $this.phone,
+          is_register: 1
+        }
+      } else {
+        // 登录验证码
+        $params = {
+          phone: $this.phone,
+          is_register: 0
+        }
+      }
+      // 获取验证码
+      userGetCode($params).then((res) => {
+        let $data = res.data;
+        Toast.success($data["errmsg"]);
+      });
+    },
+    // 打开倒计时
+    openCountdown() {
+      $this.time_count = 60;
+      $this.time_show = true;
+    },
+    //倒计时结束
+    finishCountdown() {
+      $this.time_show = false;
+    },
+    // 用户协议
+    protocolShow($flag) {
+      $this.protocol_show = $flag;
+    },
+    // 获取用户信息
+    getUserInfo() {
+      wx.getUserProfile({
+        desc: "获取你的昵称、头像、地区及性别",
+        success: (res) => {
+          $this.userinfo = res.userInfo;
+          $this.wechatLogin();
+          console.log("微信用户信息:", $this.userinfo);
+        },
+        fail: (res) => {
+          //拒绝授权
+          Toast.fail("请进行授权登录");
+        }
+      });
+    },
+    //微信授权登录
+    wechatLogin() {
+      Toast.loading({
+        forbidClick: true,
+        message: "操作中...",
+      });
+      let $params = {
+        phone: $this.phone,
+        code: $this.captcha,
+        js_code: $this.js_code
+      };
+      $params["user_name"] = $this.userinfo.nickName;
+      $params["portrait"] = $this.userinfo.avatarUrl;
+      $params["sex"] = $this.userinfo.gender;
+      wx.login({
+        success($res) {
+          $params["js_code"] = $res.code;
+          if ($this.sign * 1 === 1) {
+            // 用户注册
+            userRegister($params).then(
+              (res) => {
+                console.log(res);
+                wx.setStorageSync("is_first", true);
+                let $data = res.data;
+                if (!$data["code"]) {
+                  Toast.clear();
+                  $this.login_success($data);
+                } else {
+                  Toast.fail($data["errmsg"]);
+                }
+              },
+              (err) => {
+                console.log(err);
+              }
+            );
+          } else if ($this.sign * 1 === 2) {
+            // 用户登录
+            userLogin($params).then(
+              (res) => {
+                wx.setStorageSync("is_first", false);
+                let $data = res.data;
+                if ($data["code"] * 1 === 0) {
+                  $this.login_success($data);
+                } else {
+                  Toast.fail($data["errmsg"]);
+                }
+              },
+              (err) => {
+                console.log(err);
+              }
+            );
+          }
+        },
+      });
+    },
+    //登录成功
+    login_success($data) {
+      Toast.success($data["errmsg"]);
+      user_store.setters.set_token($data["data"]);
+      user_store.setters.set_login();
+      $this.$emit("loginStatus", true);
+      //获取用户信息
+      reload_userinfo($this);
+      console.log("登录成功",$data);
+      console.log("登录成功2",$this.userinfo)
+    }
+  },
+  mounted() {
+    $this.js_code = user_store.getters.getJsCode();
+  },
+  created() {
+    $this = this;
+    wx.getSetting({
+      success(res) {
+        let $authSetting = res.authSetting;
+        $this.auth_login = !$authSetting["scope.userInfo"];
+        console.log("auth", $this.auth_login);
+      },
+    });
+  },
+};
+</script>
+
+<template>
+  <div id="index_login_container" class="animation-slide-right">
+    <view class="text-xl padding text-center">
+      <img class="back back-home" @click="backHome" src="https://img.shuimuai.com/fanhui.png" alt=""/>
+      <text class=" text-bold title_color">{{ sign * 1 === 1 ? "注册会员" : "会员登录" }}</text>
+    </view>
+    <view class="text-df text-center text-note">请输入手机号码,以便更好的享受我们的服务</view>
+    <div class="register_form_container text-center">
+      <form action="">
+        <view class="cu-form-group">
+          <view class="title">手机号码</view>
+          <input placeholder="请输入手机号" v-model="phone" maxlength="11" @input="inputValidator"/>
+          <view class="cu-capsule radius">
+            <view class='cu-tag bg-blue'>+86</view>
+            <view class="cu-tag line-blue">中国大陆</view>
+          </view>
+        </view>
+        <view class="cu-form-group">
+          <view class="title">验证码</view>
+          <input placeholder="输入验证码" name="input" v-model="captcha" maxlength="6" @input="inputValidator"
+                 clearable/>
+          <button class='cu-btn bg-primary text-white shadow' :disabled="time_show" @click="getCaptchaCode">
+            <van-count-down v-if="time_show" :auto-start="time_show" class="control-count-down"
+                            @finish="finishCountdown" :time="time_count * 1000" format="ss"/>
+            <text>获取验证码</text>
+          </button>
+        </view>
+      </form>
+    </div>
+    <div class="text-center padding-lr padding-top">
+      <button class="cu-btn lg cu-btn-primary text-white text-center" @click="getUserInfo" :disabled="btn_disabled">
+        {{ sign * 1 === 1 ? "注册" : "登录" }}
+      </button>
+    </div>
+    <view class="text-center text-xs protocol_text">
+      <text class="text-gray">注册/登录即表示同意</text>
+      <text class="text-primary" @click="protocolShow(true)">《用户隐私协议》</text>
+    </view>
+    <van-toast id="van-toast"/>
+    <!-- 用户协议弹窗-->
+    <van-popup :show="protocol_show" @close="protocolShow(false)" position="bottom" round>
+      <div class="protocol_content padding-lr">
+        <div>
+          <h1
+            style="margin-top:17pt; margin-bottom:16.5pt; text-align:center; page-break-inside:avoid; page-break-after:avoid; line-height:240%; widows:0; orphans:0; font-size:22pt">
+            <span>隐私协议</span>
+          </h1>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>欢迎您使用</span>
+            <span>水母智脑小程序</span>
+            <span>(以下简称:“本应用”)!</span>
+            <br/>
+            <span>本应用尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务,本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外,在未征得您事先许可的情况下,本应用不会将这些信息对外披露或向第三方提供。本应用会不时更新本隐私权政策。</span>
+            <span>&#xa0;</span>
+            <span>您在同意本应用服务使用协议之时,即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本应用服务使用协议不可分割的一部分。</span>
+            <br/>
+            <br/>
+            <span>1.</span>
+            <span>&#xa0;</span>
+            <span>适用范围</span>
+            <br/>
+            <span>(a)</span>
+            <span>&#xa0;</span>
+            <span>在您注册本应用帐号时,您根据本应用要求提供的个人注册信息;</span>
+            <br/>
+            <span>(b)</span>
+            <span>&#xa0;</span>
+            <span>在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和计算机上的信息,包括但不限于您的IP地址、浏览器的类型、使用的语言、访问日期和时间、软硬件特征信息及您需求的网页记录等数据;</span>
+            <br/>
+            <span>(c)</span>
+            <span>&#xa0;</span>
+            <span>本应用通过合法途径从商业伙伴处取得的用户个人数据。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <br/>
+            <span>您了解并同意,以下信息不适用本隐私权政策:</span>
+            <br/>
+            <span>(a)</span>
+            <span>&#xa0;</span>
+            <span>您在使用本应用平台提供的搜索服务时输入的关键字信息;</span>
+            <br/>
+            <span>(b)</span>
+            <span>&#xa0;</span>
+            <span>本应用收集到的您在本应用发布的有关信息数据,包括但不限于参与活动、成交信息及评价详情;</span>
+            <br/>
+            <span>(c)</span>
+            <span>&#xa0;</span>
+            <span>违反法律规定或违反本应用规则行为及本应用已对您采取的措施。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <br/>
+            <span>2.</span>
+            <span>&#xa0;</span>
+            <span>信息使用</span>
+            <br/>
+            <span>(a)本应用不会向任何无关第三方提供、出售、出租、分享或交易您的个人信息,除非事先得到您的许可,或该第三方和本应用(含本应用关联公司)单独或共同为您提供服务,且在该服务结束后,其将被禁止访问包括其以前能够访问的所有这些资料。</span>
+            <br/>
+            <span>(b)</span>
+            <span>&#xa0;</span>
+            <span>本应用亦不允许任何第三方以任何手段收集、编辑、出售或者无偿传播您的个人信息。任何本应用平台用户如从事上述活动,一经发现,本应用有权立即终止与该用户的服务协议。</span>
+            <br/>
+            <span>(c)</span>
+            <span>&#xa0;</span>
+            <span>为服务用户的目的,本应用可能通过使用您的个人信息,向您提供您感兴趣的信息,包括但不限于向您发出产品和服务信息,或者与本应用合作伙伴共享信息以便他们向您发送有关其产品和服务的信息(后者需要您的事先同意)。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <br/>
+            <span>3.</span>
+            <span>&#xa0;</span>
+            <span>信息披露</span>
+            <br/>
+            <span>在如下情况下,本应用将依据您的个人意愿或法律的规定全部或部分的披露您的个人信息:</span>
+            <br/>
+            <span>(a)经您事先同意,向第三方披露;</span>
+            <br/>
+            <span>(b)为提供您所要求的产品和服务,而必须和第三方分享您的个人信息;</span>
+            <br/>
+            <span>(c)根据法律的有关规定,或者行政或司法机构的要求,向第三方或者行政、司法机构披露;</span>
+            <br/>
+            <span>(d)如您出现违反中国有关法律、法规或者本应用服务协议或相关规则的情况,需要向第三方披露;</span>
+            <br/>
+            <span>(e)如您是适格的知识产权投诉人并已提起投诉,应被投诉人要求,向被投诉人披露,以便双方处理可能的权利纠纷;</span>
+            <br/>
+            <span>(f)在本应用平台上创建的某一交易中,如交易任何一方履行或部分履行了交易义务并提出信息披露请求的,本应用有权决定向该用户提供其交易对方的联络方式等必要信息,以促成交易的完成或纠纷的解决。</span>
+            <br/>
+            <span>(g)</span>
+            <span>&#xa0;</span>
+            <span>其它本应用根据法律、法规或者网站政策认为合适的披露。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <br/>
+            <span>4.</span>
+            <span>&#xa0;</span>
+            <span>信息存储和交换</span>
+            <br/>
+            <span>本应用收集的有关您的信息和资料将保存在本应用及(或)其关联公司的服务器上,这些信息和资料可能传送至您所在国家、地区或本应用收集信息和资料所在地的境外并在境外被访问、存储和展示。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <br/>
+            <span>5.</span>
+            <span>&#xa0;</span>
+            <span>Cookie的使用</span>
+            <br/>
+            <span>(a)在您未拒绝接受cookies的情况下,本应用会在您的计算机上设定或取用cookies</span>
+            <span>&#xa0;</span>
+            <span>,以便您能登录或使用依赖于cookies的本应用平台服务或功能。本应用使用cookies可为您提供更加周到的个性化服务,包括推广服务。</span>
+            <br/>
+            <span>(b)您有权选择接受或拒绝接受cookies。您可以通过修改浏览器设置的方式拒绝接受cookies。但如果您选择拒绝接受cookies,则您可能无法登录或使用依赖于cookies的本应用网络服务或功能。</span>
+            <br/>
+            <span>(c)通过本应用所设cookies所取得的有关信息,将适用本政策。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; font-size:9pt; background-color:#ffffff">
+            <br/>
+            <span>6.</span>
+            <span>&#xa0;</span>
+            <span>信息安全</span>
+            <br/>
+            <span>(a)本应用帐号均有安全保护功能,请妥善保管您的用户名及密码信息。本应用将通过对用户密码进行加密等安全措施确保您的信息不丢失,不被滥用和变造。尽管有前述安全措施,但同时也请您注意在信息网络上不存在“完善的安全措施”。</span>
+            <br/>
+            <span>(b)在使用本应用网络服务进行网上交易时,您不可避免的要向交易对方或潜在的交易对</span>
+            <span>方披露自己的个人信息,</span>
+            <span>如</span>
+            <span>个人信息泄密,尤其是本应用用户名及密码发生泄露,请您立即联络本应用客服,以便本应用采取相应措施</span>
+            <span>。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <br/>
+            <span>7.本隐私政策的更改</span>
+            <br/>
+            <br/>
+            <span>(a)如果决定更改隐私政策,我们会在本政策中、本公司网站中以及我们认为适当的位置发布这些更改,以便您了解我们如何收集、使用您的个人信息,哪些人可以访问这些信息,以及在什么情况下我们会透露这些信息。</span>
+            <br/>
+            <span>(b)本公司保留随时修改本政策的权利,因此请经常查看。如对本政策作出重大更改,本公司会通过网站通知的形式告知。</span>
+          </p>
+          <h1
+            style="margin-top:17pt; margin-bottom:16.5pt; text-align:center; page-break-inside:avoid; page-break-after:avoid; line-height:240%; widows:0; orphans:0; font-size:22pt">
+            <span>服务协议</span>
+          </h1>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>一、总则</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>此份协议是注册用户接受</span>
+            <span>深圳水母智脑科技有限公司</span>
+            <span>(以下简称</span>
+            <span>水母智脑</span>
+            <span>)产品和服务时适用的通用条款。因此,请您在注册成为</span>
+            <span>水母智脑</span>
+            <span>用户前或接受</span>
+            <span>水母智脑</span>
+            <span>的产品和服务之前,请您详细地阅读本注册用户协议的所有内容。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>1、注册用户了解并同意:</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>只要注册用户</span>
+            <span>点击注册按钮即视为</span>
+            <span>注册用户已接受了本注册用户协议及</span>
+            <span>水母智脑</span>
+            <span>的各项服务规则(包括填写实名的联系方式等等),并</span>
+            <span>愿意受其约束。如果发生纠纷,注册用户不得以未仔细阅读为由进行抗辩。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>随着市场经营情况的变化,</span>
+            <span>水母智脑</span>
+            <span>有权随时更改本注册用户协议及相关服务规则。修改本注册用户协议时,</span>
+            <span>水母智脑</span>
+            <span>将于相关页面公告修改的事实,有权不对注册用户进行个别通知。注册用户应该在每次登录前查询网站的相关公告,以了解注册用户协议及其他服务规则的变化。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>2、若注册用户不同意本注册用户协议或相关服务规则,或者不同意</span>
+            <span>水母智脑</span>
+            <span>作出的修改,注册用户可以主动停止使用</span>
+            <span>水母智脑</span>
+            <span>提供的产品和服务,如果在</span>
+            <span>水母智脑</span>
+            <span>修改协议或服务规则后,注册用户仍继续使用</span>
+            <span>水母智脑</span>
+            <span>提供的产品和服务,即表示注册用户同意</span>
+            <span>水母智脑</span>
+            <span>对本注册用户协议及相关服务规则所做的所有修改。由于注册用户在注册用户协议变更后因未熟悉公告规定而引起的损失,</span>
+            <span>水母智脑</span>
+            <span>将不会承担任何责任。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>3、</span>
+            <span>水母智脑</span>
+            <span>的各项电子服务的所有权和运作权归</span>
+            <span>水母智脑</span>
+            <span>。</span>
+            <span>水母智脑</span>
+            <span>提供的服务将完全按照其发布的服务条款和操作规则严格执行。注册用户必须完全同意所有服务条款并完成注册程序,才能成为</span>
+            <span>水母智脑</span>
+            <span>的注册用户。注册用户确认:本协议条款是处理双方权利义务的当然约定依据,除非违反国家强制性法律,否则始终有效。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>二、服务简介</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>1、</span>
+            <span>水母智脑</span>
+            <span>运用自己的</span>
+            <span>程序</span>
+            <span>系统通过互联网</span>
+            <span>产品</span>
+            <span>为注册用户提供网络服务。同时,注册用户必须自行配备上网的所需设备,包括个人电脑、调制解调器或其他必备上网装置。自行负担个人上网所支付的与此服务有关的电话费用、网络费用。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>2、基于</span>
+            <span>水母智脑</span>
+            <span>所提供的网络服务的重要性,注册用户应同意:提供详尽、准确的个人资料。不断更新注册资料,符合及时、详尽、准确的要求。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>3、</span>
+            <span>水母智脑</span>
+            <span>对注册用户的电子邮件、手机号等隐私资料进行保护,承诺不会在未获得注册用户许可的情况下擅自将注册用户的个人资料信息出租或出售给任何第三方,但以下情况除外:注册用户同意让第三方共享资料;注册用户同意公开其个人资料,享受为其提供的产品和服务;</span>
+            <span>水母智脑</span>
+            <span>需要听从法庭传票、法律命令或遵循法律程序;</span>
+            <span>水母智脑</span>
+            <span>发现注册用户违反了</span>
+            <span>水母智脑</span>
+            <span>服务条款或</span>
+            <span>水母智脑</span>
+            <span>其它使用规定。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>4、关于注册用户隐私的具体协议以</span>
+            <span>水母智脑</span>
+            <span>的隐私声明为准。如果注册用户提供的资料包含有不正确的信息,</span>
+            <span>水母智脑</span>
+            <span>保留结束注册用户使用网络服务资格的权利。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>三、帐户安全性</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>注册用户一旦注册成功,成为</span>
+            <span>水母智脑</span>
+            <span>的合法的注册用户。注册用户将对注册用户名安全负全部责任。另外,每个注册用户都要对以其注册用户名进行的所有活动和事件负全责。注册用户若发现任何非法使用注册用户帐户或存在安全漏洞的情况,请立即通告</span>
+            <span>水母智脑</span>
+            <span>。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>&#xa0;</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>四、拒绝提供担保</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>注册用户个人对网络服务的使用承担风险。</span>
+            <span>水母智脑</span>
+            <span>对此不作任何类型的担保,不论是明确的或隐含的,但是不对商业性的隐含担保、特定目的和不违反规定的适当担保作限制。</span>
+            <span>水母智脑</span>
+            <span>不担保服务一定能满足注册用户的要求,也不担保服务不会受中断,对服务的及时性,安全性,出错发生都不作担保。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>五、有限责任</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>水母智脑</span>
+            <span>对任何直接、间接、偶然、特殊及继起的损害不负责任,这些损害可能来自:不正当使用网络服务,在网上购买商品或进行同类型服务,在网上进行交易,非法使用网络服务或注册用户传送的信息有所变动。这些行为都有可能会导致</span>
+            <span>水母智脑</span>
+            <span>的形象受损,所以</span>
+            <span>水母智脑</span>
+            <span>事先提出这种损害的可能性。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>六、通告</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>所有发给注册用户的通告都可通过重要页面的公告或电子邮件或常规的信件传送。</span>
+            <span>水母智脑</span>
+            <span>的活动信息也将定期通过页面公告</span>
+            <ins style="-aw-revision-author:'Jeff'; -aw-revision-datetime:'2021-04-08T11:23:33'">
+              <span>或</span>
+            </ins>
+            <span>电子邮件方式向注册用户发送。注册用户协议条款的修改、服务变更、或其它重要事件的通告会以电子邮箱或者短信进行通知。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>七、注册用户的建议奖励</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>注册用户在他们发表的一些良好建议以及一些比较有价值的策划方案时,</span>
+            <span>水母智脑</span>
+            <span>愿意展示用户的构想落于实现,这其中</span>
+            <span>水母智脑</span>
+            <span>会对一些比较好的注册用户反馈信息进行不等的产品奖励或者是积分奖励,但如出现用户策划与广告销售商之间的矛盾</span>
+            <span>水母智脑</span>
+            <span>不承担任何责任。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>八、责任限制</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>1、如因不可抗力或其他</span>
+            <span>水母智脑</span>
+            <span>无法控制的原因使</span>
+            <span>水母智脑</span>
+            <span>销售系统崩溃或无法正常使用导致网上交易无法完成或丢失有关的信息、记录等,</span>
+            <span>水母智脑</span>
+            <span>不承担责任。但是</span>
+            <span>水母智脑</span>
+            <span>会尽可能合理地协助处理善后事宜,并努力使客户免受经济损失。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>2、除了</span>
+            <span>水母智脑</span>
+            <span>的使用条件中规定的其它限制和除外情况之外,在中国法律法规所允许的限度内,对于因交易而引起的或与之有关的任何直接的、间接的、特殊的、附带的、后果性的或惩罚性的损害,或任何其它性质的损害,</span>
+            <span>水母智脑</span>
+            <span>、</span>
+            <span>水母智脑</span>
+            <span>的董事、管理人员、雇员、代理或其它代表在任何情况下都不承担责任。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>九、法律管辖和适用</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>1、本协议的订立、执行和解释及争议的解决均应适用中国法律。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>2、如发生</span>
+            <span>水母智脑</span>
+            <span>服务条款与中国法律相抵触时,则这些条款将完全按法律规定重新解释,而其它合法条款则依旧保持对注册用户产生法律效力和影响。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>3、本协议的规定是可分割的,如本协议任何规定被裁定为无效或不可执行,该规定可被删除而其余条款应予以执行。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>4、如双方就本协议内容或其执行发生任何争议,双方应尽力友好协商解决;协商不成时,任何一方均可向</span>
+            <span>水母智脑</span>
+            <span>所在地的人民法院提起诉讼。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>十、其他规定</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>1、如本用户协议中的任何内容无论因何种原因完全或部分无效或不具有执行力,本用户协议的其余内容仍应有效并且对协议各方有约束力。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>2、本用户协议中的标题仅为方便而设,不具法律或契</span>
+            <span>约效果。</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>&#xa0;</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>深圳水母智脑科技有限公司</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>&#xa0;</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>&#xa0;</span>
+          </p>
+          <p style="margin-top:0pt; margin-bottom:0pt; text-align:justify; widows:0; orphans:0; font-size:9pt">
+            <span>&#xa0;</span>
+          </p>
+        </div>
+      </div>
+    </van-popup>
+  </div>
+</template>
+
+<style scoped>
+.back-home {
+  width: 22px;
+  height: 20px;
+  position: absolute;
+  left: 20px;
+}
+
+.text-primary {
+  color: #4b3ab0;
+}
+
+.cu-form-group {
+  background-color: rgba(255, 255, 255, 0);
+}
+
+.text-note {
+  color: #4b4b4b;
+  font-size: 13px;
+}
+
+/*注册页面*/
+.register_form_container {
+  margin: 70px auto 0px;
+  width: 90%;
+  height: 108px;
+  background: rgba(242, 243, 255, 0.6);
+  box-shadow: 0px 3px 7px 0px rgba(159, 159, 159, 0.84);
+  border-radius: 11px;
+}
+
+.protocol_content {
+  width: 100%;
+  height: 500px;
+  font-family: '宋体', serif;
+}
+
+.protocol_text {
+  font-size: 11px;
+  padding-top: 4px;
+}
+</style>

+ 145 - 0
src/components/usercard.vue

@@ -0,0 +1,145 @@
+<script>
+import {reload_userinfo} from "../utils/user";
+
+let $this;
+export default {
+  name: "userCard",
+  data() {
+    return {
+      userinfo: {
+        //判断是否第一次进入小程序 1为是第一次 0为非第一次
+      },
+      invite_code: 0,
+    };
+  },
+  methods: {
+    //跳转页面
+    pageTo($page) {
+      mpvue.navigateTo({
+        url: "/pages/" + $page + "/main",
+      });
+    }
+  },
+  mounted() {
+    $this.invite_code = wx.getStorageSync("code");
+    reload_userinfo($this);
+  },
+  created() {
+    $this = this;
+  },
+  onPullDownRefresh() {
+    reload_userinfo($this);
+  },
+};
+</script>
+
+<template>
+  <div id="personal">
+    <!-- 用户信息 -->
+    <div :class="{ userinfoYellow: userinfo.isActive, userinfoGrey: userinfo.isntActive}">
+      <van-row class="padding">
+        <van-col span="3" offset="2">
+          <view class="cu-avatar radius lg" :style="'background-image:url(' + userinfo.portrait + ');'"></view>
+        </van-col>
+        <van-col span="12" offset="1">
+          <div class="flex flex-direction align-start justify-start">
+            <div>
+              <text class="text-black text-bold">{{ userinfo.user_name }}</text>
+            </div>
+            <div class="flex justify-between align-center">
+              <button class="cu-btn sm round"
+                      :class="{ level_btn_yellow: userinfo.isActive, level_btn_grey: userinfo.isntActive }">
+                {{ userinfo.level_name }}
+              </button>
+              <view class="text-xs padding-left" v-if="userinfo.level*1 === 11">有效期至
+                {{ userinfo["validity_time_formatted"] }}
+              </view>
+            </div>
+          </div>
+        </van-col>
+        <van-col span="5">
+          <view class="text" @click="pageTo('user_center')">
+            <text class="cuIcon-people"></text>
+            <text class="under_line">会员中心</text>
+          </view>
+        </van-col>
+      </van-row>
+      <van-row class="padding">
+        <view style="opacity:1">
+          <van-col span="4" class="lg" offset="2">
+            <text class="cuIcon-selection"></text>
+            卡号:
+          </van-col>
+          <van-col span="8">
+            <text class="text-white text-bold text-lg">{{ invite_code }}</text>
+          </van-col>
+        </view>
+      </van-row>
+      <van-row>
+        <van-col span="6" offset="1">
+          <div class="flex flex-direction align-center">
+            <text class="text-xxl">{{ userinfo.play_time }}</text>
+            <text class="font-sm">可用时长(分钟)</text>
+          </div>
+        </van-col>
+        <van-col span="7" offset="2" @click="pageTo('coupons')">
+          <div class="flex flex-direction align-center">
+            <text class="text-xxl">{{ userinfo.coupon }}</text>
+            <text class="font-sm">已领券数量</text>
+          </div>
+        </van-col>
+        <van-col span="6" offset="2">
+          <div class="flex flex-direction align-center">
+            <text class="text-xxl">{{ userinfo.experience }}</text>
+            <text class="font-sm">次卡</text>
+          </div>
+        </van-col>
+      </van-row>
+    </div>
+    <view class="text-center font-sm" v-if="userinfo.level >= 3 && userinfo.level <= 7">
+      <text class="text-gray">今日专注力免费训练时长还有:
+        <text class="text-yellow">{{ userinfo.free_time }}</text>
+      </text>
+    </view>
+    <van-toast id="van-toast"/>
+  </div>
+</template>
+
+<style scoped>
+.userinfoYellow {
+  background-image: url("https://img.shuimuai.com/huiyuankadiban.png");
+  background-position: center;
+  background-size: 100% 100%;
+  width: 99%;
+  height: 173px;
+  margin: 0px auto;
+}
+
+.userinfoGrey {
+  background-image: url("https://img.shuimuai.com/pic_grey.png");
+  background-position: center;
+  background-size: 100% 100%;
+  width: 99%;
+  height: 173px;
+  margin: 0px auto;
+}
+
+#personal {
+  width: 100%;
+  position: relative;
+  top: -95px;
+  z-index: 3;
+}
+
+.level_btn_yellow {
+  background-color: #e3a000;
+}
+
+.level_btn_grey {
+  background-color: #909090;
+}
+
+.font-sm {
+  font-size: 10px;
+}
+</style>

+ 56 - 0
src/components/welcome.vue

@@ -0,0 +1,56 @@
+<script>
+import user_store from "@/store/index";
+export default {
+  name: "welcome",
+  methods: {
+    /**
+     * 去 注册/登录
+     * @param $status 注册1,登录2
+     */
+    handleSign($status) {
+      this.$emit("signStatus", $status);
+    }
+  },
+  mounted() {
+    wx.login({
+      success (res) {
+        if (res.code){
+          // 这里可以把code传给后台,后台用此获取openid及session_key
+          user_store.setters.setJsCode(res.code);
+        }
+      },
+    })
+  }
+};
+</script>
+
+<template>
+  <div id="index_login_container" class="animation-slide-right">
+    <view class=" text-xl padding text-center">
+      <text class=" text-bold title_color">欢迎来到水母星球!</text>
+    </view>
+    <view class="text-df text-center">在此将会体验到操控专注力的神奇感觉</view>
+    <div class="welcome_txt text-center">现在,开始您的专注力旅程吧!</div>
+    <div class="text-center padding-lr padding-top">
+      <button class="cu-btn lg cu-btn-primary text-white text-center" @click="handleSign(1)">账号注册</button>
+    </div>
+    <view class="text-center welcome_note">
+      <text class="text-gray">如果您在我们实体店,请在店员的指导下连接水母智脑机</text>
+    </view>
+    <view class="text-center text-lg padding-lr" @click="handleSign(2)">
+      <text class="text-gray under_line">账号登录</text>
+    </view>
+  </div>
+</template>
+
+<style scoped>
+.welcome_txt {
+  font-size: 22px;
+  margin-top: 110px;
+  color: #4c4c4c;
+}
+.welcome_note {
+  font-size: 11px;
+  padding: 8px 0px;
+}
+</style>

+ 4 - 4
src/pages/competition/index.vue

@@ -595,7 +595,7 @@
                       <span class="rank_username">{{ item.user_name }}</span>
                     </van-col>
                     <van-col span="4">
-                      <span class="slogen">总决赛积分</span>
+                      <span class="text-note">总决赛积分</span>
                     </van-col>
                     <van-col span="2">
                       <span class="rank_score">{{ item.att_average }}</span>
@@ -633,7 +633,7 @@
                       <span class="rank_username">{{ item.user_name }}</span>
                     </van-col>
                     <van-col span="4">
-                      <span class="slogen">总决赛积分</span>
+                      <span class="text-note">总决赛积分</span>
                     </van-col>
                     <van-col span="2">
                       <span class="rank_score">{{ item.att_average }}</span>
@@ -671,7 +671,7 @@
                       <span class="rank_username second_text">{{ item.user_name }}</span>
                     </van-col>
                     <van-col span="4">
-                      <span class="slogen second_text">晋级赛积分</span>
+                      <span class="text-note second_text">晋级赛积分</span>
                     </van-col>
                     <van-col span="2">
                       <span class="rank_score second_text">{{ item.att_average }}</span>
@@ -1412,7 +1412,7 @@ page {
   line-height: 14px;
 }
 
-.diy_container .rank_list_ext .slogen {
+.diy_container .rank_list_ext .text-note {
   font-size: 7px;
   font-family: Microsoft YaHei;
   font-weight: bold;

+ 72 - 170
src/pages/index/index.vue

@@ -1,156 +1,53 @@
-<template>
-  <div id="container">
-    <!--    banner模块-->
-    <banner></banner>
-    <!--    未登录 登录窗口模块-->
-    <div
-      class="login_card"
-      v-if="!is_login"
-    >
-      <!--      登录窗口-->
-      <login_container
-        v-if="login_status == 'login'"
-        @changeStatus="change_status"
-        @changeTitle="change_title"
-      ></login_container>
-      <!--      注册窗口-->
-      <regist_container
-        v-if="login_status == 'regist'"
-        @changeStatus='change_status'
-        @change_login_status="change_login_status"
-        :title="regist_title"
-      ></regist_container>
-
-    </div>
-    <!--    登陆后 的个人首页-->
-    <div
-      class="personal_card"
-      v-if="is_login"
-    >
-      <personal_container @change_login_status="change_login_status"></personal_container>
-
-      <device_container></device_container>
-    </div>
-    <div
-      class="service"
-      :class="{'service_login_page':is_login==false}"
-    >
-      <view class="padding-tb">
-        <text class="cuIcon-titles text-primary"></text>
-        <text class="">功能服务</text>
-      </view>
-      <div class="content">
-        <van-row>
-          <van-col span="12">
-            <img
-              src="https://img.shuimuai.com/web/index_btn_chengjijilu.png"
-              @click="to_page('game_record')"
-            >
-          </van-col>
-<!--          <van-col span="12">-->
-<!--            <img-->
-<!--              src="https://img.shuimuai.com/index_btn_chongzhizhongxin.png"-->
-<!--              @click="to_page('user_center/recharge')"-->
-<!--            >-->
-<!--          </van-col>-->
-          <van-col span="12">
-            <img
-              src="https://img.shuimuai.com/web/index_btn_gerenzhongxin.png"
-              @click="to_page('user_center')"
-            >
-          </van-col>
-        </van-row>
-
-<!--        <van-row>-->
-<!--          <van-col span="12">-->
-<!--            <img-->
-<!--              src="https://img.shuimuai.com/web/index_btn_chengjijilu.png"-->
-<!--              @click="to_page('game_record')"-->
-<!--            >-->
-<!--          </van-col>-->
-<!--          <van-col span="12">-->
-<!--            <img-->
-<!--              src="https://img.shuimuai.com/index_btn_dailishang.png"-->
-<!--              @click="to_page('agent/index')"-->
-<!--            >-->
-<!--          </van-col>-->
-<!--        </van-row>-->
-      </div>
-    </div>
-    <van-toast id="van-toast"/>
-    <van-dialog id="van-dialog"/>
-    <!--     <button class="cu-btn lg cu-btn-primary text-white text-center margin-tb" @click="auth_msg">获取消息授权-->
-    <!--    </button>-->
-  </div>
-</template>
-
 <script>
-import banner from "@/components/banner";
-import login_container from "@/components/index/login";
-import regist_container from "@/components/index/regist";
-import personal_container from "@/components/index/personal";
+import Banner from "@/components/banner";
+import Welcome from "@/components/welcome";
+import Login from "@/components/login";
+import Usercard from "@/components/usercard";
 import device_container from "@/components/device/device";
 import Toast from "../../../static/vant/toast/toast";
 import Dialog from "../../../static/vant/dialog/dialog";
-import {userDetail, setUserLogin} from "../../requests/user";
+import {setUserLogin} from "../../requests/user";
 import user_store from "../../store/index";
 import game_store from "../../store/game";
-import game_util, {post_data} from "../../utils/game";
-import ble from '@/utils/bluetooth'
+import {post_data} from "../../utils/game";
 
-var $this;
+let $this;
 export default {
   name: "index_container",
   components: {
-    banner,
-    login_container,
-    regist_container,
-    personal_container,
+
+    Banner,
+    Welcome,
+    Login,
+    Usercard,
+
     device_container,
   },
   data() {
     return {
-      // 三种状态 扫码scan 注册regist 登录login
-      login_status: "login",
-      // is_login: false,
-      is_login: false,
-      regist_title: "",
+      // 欢迎界面0,注册1 登录2
+      welcome_status: 0,
+      // 登录状态
+      is_login: false
     };
   },
+  created() {
+    $this = this;
+  },
   methods: {
-    get_init_data() {
-    },
-    //切换到扫码
-    change_status($status) {
-      this.login_status = $status;
-    },
-    //跳转充值中心
-    to_recharge() {
-      mpvue.navigateTo({
-        url: "/pages/user_center/recharge/main",
-      });
+    /**
+     * 切换 注册/登录
+     * @param $status 欢迎界面0,注册1,登录2
+     */
+    changeWelcome($status) {
+      this.welcome_status = $status;
     },
     //修改登录状态
-    change_login_status() {
+    changeLoginStatus() {
       this.is_login = user_store.getters.get_login_status();
     },
-    // 修改界面的文字
-    change_title($status) {
-      if ($status == 0) {
-        this.regist_title = "注册";
-      } else if ($status == 1) {
-        this.regist_title = "登录";
-      }
-    },
     //跳转页面
-    to_page($page) {
-      if ($page == "agent/index") {
-        //店员店长不可进
-        if ($this.userinfo.level == 8 || $this.userinfo.level == 9) {
-          Toast.fail("店员、店长不可进");
-          return false;
-        }
-      }
+    pageTo($page) {
       if (!this.is_login) {
         Toast.fail("请先登录");
         return false;
@@ -158,43 +55,20 @@ export default {
       mpvue.navigateTo({
         url: "/pages/" + $page + "/main",
       });
-    },
-    auth_msg() {
-      wx.requestSubscribeMessage({
-        tmplIds: [
-          "NV-xb_oOPutXLVge0ZnBxct_nNxS1j1XNCMtfp2c8zw",
-          "70xngszQ62NWHbbCjbggbz5-pvOu3Z8ttLbjfplJXLg",
-        ],
-        success(res) {
-          console.log(res);
-          Toast.success("授权成功");
-        },
-      });
-    },
-  },
-  mounted() {
-    wx.login({
-      success(res) {
-        console.log(res);
-      },
-    });
+    }
   },
   onShow() {
-
-    if (wx.getStorageSync("is_other_first") == false) {
+    if (wx.getStorageSync("is_other_first") === false) {
       wx.setStorageSync("is_other", false);
     } else {
       wx.setStorageSync("is_other", true);
     }
-
   },
-  onHide() {
-  },
-  onLoad($option) {
+  onLoad() {
     // if (process.env.NODE_ENV == "development") {
-    //   wx.setStorageSync('token',"uWBC1UDZ4GciXkBkuGFTJ914xOoyMmvk")
+    //   wx.setStorageSync('token', "WxN3rgbWyVpjyBhi4uT6mZmwajZ3dFlm");
     // }
-    if (game_store.getters.getGameStatus() == 1) {
+    if (game_store.getters.getGameStatus() * 1 === 1) {
       Dialog.alert({
         title: "系统提示",
         message: "正在结束上一个游戏",
@@ -202,25 +76,16 @@ export default {
         post_data(game_store.getters.getGameAttMedDatas());
       });
     }
-
     //  判断存储是否登录
     let $token = wx.getStorageSync("token");
     if ($token) {
       user_store.setters.set_token($token);
       user_store.setters.set_login(true);
       this.is_login = user_store.getters.get_login_status();
-      // wx.navigateTo({
-      //   url: "/pages/payment/main",
-      // });
-      // 存在token时候录入
-      setUserLogin().then((res) => {
-        // console.log("录入", res);
-      });
+      // 登录小程序录入
+      setUserLogin();
     }
   },
-  created() {
-    $this = this;
-  },
   onShareAppMessage() {
     return {
       title: "欢迎进入水母星球",
@@ -231,6 +96,43 @@ export default {
 };
 </script>
 
+<template>
+  <div id="container">
+    <!-- banner模块 -->
+    <Banner></Banner>
+    <!-- 未登录 登录窗口模块-->
+    <div v-if="!is_login" class="login_card">
+      <!-- 欢迎模块 -->
+      <Welcome v-if="welcome_status===0" @signStatus="changeWelcome"></Welcome>
+      <!--登录注册窗口 -->
+      <Login v-else :sign="welcome_status" @welcomeStatus="changeWelcome" @loginStatus="changeLoginStatus"></Login>
+    </div>
+    <!-- 登陆后 个人首页-->
+    <div class="personal_card" v-if="is_login">
+      <Usercard></Usercard>
+      <device_container></device_container>
+    </div>
+    <div class="service" :class="{'service_login_page':!is_login}">
+      <view class="padding-tb">
+        <text class="cuIcon-titles text-primary"></text>
+        <text class="">功能服务</text>
+      </view>
+      <div class="content">
+        <van-row>
+          <van-col span="12">
+            <img src="https://img.shuimuai.com/web/index_btn_chengjijilu.png" @click="pageTo('game_record')">
+          </van-col>
+          <van-col span="12">
+            <img src="https://img.shuimuai.com/web/index_btn_gerenzhongxin.png" @click="pageTo('user_center')">
+          </van-col>
+        </van-row>
+      </div>
+    </div>
+    <van-toast id="van-toast"/>
+    <van-dialog id="van-dialog"/>
+  </div>
+</template>
+
 <style scoped>
 /*@import "index.css";*/
 .login_card {

+ 7 - 0
src/pages/start/index.vue

@@ -380,6 +380,11 @@ export default {
     game_finished() {
       if (!$this.executed) {
         LogInDb(`${$this.$bluetooth.getNowTime()} 游戏结束`)
+        // 打开LED
+        $this.$bluetooth.SendLedOrder("01");
+        // 断开教具及蓝牙连接
+        $this.$bluetooth.SendOrder("31");
+
         $this.$bluetooth.sendControlClose();
 
         $this.$emit("closePop", true);
@@ -447,6 +452,8 @@ export default {
       $this.$bluetooth.sendAutoConnectRf(true, Math.round($this.played_time / 60));
 
       $this.$bluetooth.watchingDevice($this);
+      // 关闭LED
+      $this.$bluetooth.SendLedOrder("00");
       // 开始倒计时
       clearInterval($timeout)
       $timeout = setInterval(() => {

+ 48 - 34
src/pages/user_center/index.vue

@@ -89,30 +89,23 @@
           class="icon1"
         >
       </van-cell>
-      <!--      <van-cell title="家庭组" icon="wap-home-o" is-link/>-->
-      <van-cell
-        title="联系客服"
-        is-link
-      >
+      <van-cell title="联系客服" is-link class="contact_button" >
         <img
           src="https://img.shuimuai.com/web/icon/icon_kefu.png"
           alt=""
           slot="icon"
           class="icon4"
         >
+        <van-button open-type="contact"></van-button>
       </van-cell>
-      <van-button
-        open-type="contact"
-        block
-        custom-class="contact_button"
-      >
-        <div>
-          <view>
-            <van-icon name="service-o" />&nbsp;联系客服
-          </view>
+      <van-cell>
+        <div class="ledBtn">
+          <van-icon class="icon" name="bulb-o" color="#6758c4" size="20"/>脑机LED灯
+          <span class="led">
+            <van-switch :checked="led_status" @change="ledChange" size="20px" active-color="#6758c4"/>
+          </span>
         </div>
-
-      </van-button>
+      </van-cell>
     </van-cell-group>
     <van-toast id="van-toast" />
 
@@ -121,7 +114,7 @@
 
 <script>
 import { reload_userinfo } from "../../utils/user";
-
+import game_store from "@/store/game";
 import Toast from "../../../static/vant/toast/toast";
 
 var $this;
@@ -131,9 +124,25 @@ export default {
   data() {
     return {
       userinfo: {},
+      led_status: true,
     };
   },
   methods: {
+    ledChange() {
+      this.led_status = !this.led_status;
+      console.log("脑机LED灯:",this.led_status)
+      // let $ble_status = wx.getStorageSync("ble_link_status");
+      // if ($ble_status) {
+        //蓝牙已连接
+        if(this.led_status ){
+          $this.$bluetooth.SendLedOrder("01");
+        }else{
+          $this.$bluetooth.SendLedOrder("00");
+        }
+      // }
+      // 保存状态到数据库
+      // todo
+    },
     to_edit() {
       mpvue.navigateTo({
         url: "/pages/user_center/edit/main",
@@ -162,18 +171,11 @@ export default {
       mpvue.navigateTo({
         url: "/pages/coupons/main",
       });
-    },
-    to_agent() {
-      if ($this.userinfo.level == 8 || $this.userinfo.level == 9) {
-        Toast.fail("店员、店长不可进");
-        return false;
-      }
-      mpvue.navigateTo({
-        url: "/pages/agent/index/main",
-      });
-    },
+    }
+  },
+  mounted() {
+    this.led_status = game_store.getters.getLED();
   },
-  mounted() {},
   created() {
     $this = this;
   },
@@ -184,10 +186,15 @@ export default {
 </script>
 
 <style>
-.contact_button {
-  position: relative;
-  bottom: 45px;
-  opacity: 0;
+.contact_button .van-button{
+  display:block;
+  position: absolute;
+  left:0;
+  top:0;
+  z-index:1;
+  opacity:0.1;
+  width:100%;
+  height:100%;
 }
 </style>
 <style scoped>
@@ -343,8 +350,6 @@ image.bianji {
 
 .contact_button {
   position: relative;
-  bottom: 45px;
-  opacity: 0;
 }
 
 .icon1 {
@@ -374,4 +379,13 @@ image.bianji {
   padding: 0px 2px;
   margin: 0px 2px;
 }
+.ledBtn{
+  width: 100%;
+  text-align: left;
+  color:#333;
+}
+.ledBtn .led {
+  float:right;
+  margin-right: 10px;
+}
 </style>

+ 2 - 1
src/pages/user_center/main.json

@@ -8,6 +8,7 @@
     "van-icon": "../../static/vant/icon/index",
     "van-toast": "../../static/vant/toast/index",
     "van-overlay": "../../static/vant/overlay/index",
-    "van-button": "../../static/vant/button/index"
+    "van-button": "../../static/vant/button/index",
+    "van-switch": "../../static/vant/switch/index"
   }
 }

+ 2 - 3
src/requests/user.js

@@ -118,7 +118,7 @@ export function userCheckUnionid($js_code) {
 
 //获取轮播图列表
 export function getBannerList() {
-  
+
   let $params = {
     access_token:wx.getStorageSync('token')
   }
@@ -127,7 +127,7 @@ export function getBannerList() {
 
 //获取联名轮播图
 export function getJointBanner() {
-  
+
   let $params = {
     access_token:wx.getStorageSync('token')
   }
@@ -136,7 +136,6 @@ export function getJointBanner() {
 
 //小程序登录一次就录入一次数据
 export function setUserLogin() {
- 
   let $params = {
     access_token:wx.getStorageSync('token')
   }

+ 10 - 2
src/store/game.js

@@ -61,7 +61,11 @@ const setters = {
   },
   setIsNew($param) {
     wx.setStorageSync('is_new', $param)
-  }
+  },
+  // 脑机LED灯
+  setLED(bool) {
+    wx.setStorageSync('led_status', bool)
+  },
 }
 
 const getters = {
@@ -120,7 +124,11 @@ const getters = {
   //记录游戏数据
   getIsNew() {
     return wx.getStorageSync('is_new')
-  }
+  },
+  // 脑机LED灯
+  getLED() {
+    return wx.getStorageSync('led_status')
+  },
 }
 
 const remover = {

+ 24 - 0
src/utils/bluetooth.js

@@ -108,6 +108,13 @@ export default {
     let that = this;
     // 先发第一次
     that.SendOrder('07')
+    // 获取LED灯状态并设置
+    let led_status = game_store.getters.getLED();
+    if(led_status ){
+      $this.$bluetooth.SendLedOrder("01");
+    }else{
+      $this.$bluetooth.SendLedOrder("00");
+    }
     wx.showLoading({
       title: "正在启动"
     })
@@ -130,7 +137,12 @@ export default {
     control_close = false;
     control_close_intv = setInterval(() => {
       if (!control_close) {
+        // 关闭脑控
         that.SendOrder('09')
+        // 打开LED
+        $this.$bluetooth.SendLedOrder("01");
+        // 断开教具及蓝牙连接
+        $this.$bluetooth.SendOrder("31");
         //如果是jellyfish则发送00教具
         if (!is_new) {
           that.sendConnectOneToMore('00')
@@ -565,6 +577,8 @@ export default {
         $this.toy_sn = $sn;
         //获取教具电量
         // that.SendOrder('8a')
+        console.log("获取教具名称hexStr",hexStr)
+        console.log("获取教具名称$sn",$sn)
       }
       if (hexStr.toUpperCase().indexOf("AAEE87") != -1) {
         //获取教具电量
@@ -842,6 +856,16 @@ export default {
     this.WriteBufferInBle($hexStr, 16)
   },
 
+  /**
+   * todo 打开或关闭LED灯
+   * AA CC 03 00 00 ctrl EC CKS
+   * @param id 末尾id
+   * @constructor
+   */
+  SendLedOrder(id) {
+    let $hexStr = `03 00 00 ${id} ec`;
+    this.WriteBufferInBle($hexStr)
+  },
 
   /**
    * todo 解析hex

+ 11 - 9
src/utils/user.js

@@ -1,8 +1,7 @@
-import { userDetail, timestamp } from "../requests/user";
-import { formatBirthday, formatSeconds, formatTime } from "./index";
-import utils from "./index";
+import {timestamp, userDetail} from "../requests/user";
+import {formatBirthday, formatSeconds, formatTime} from "./index";
 import user_store from '../store/index'
-
+import game_store from "../store/game";
 
 //刷新用户信息
 export function reload_userinfo($this) {
@@ -24,10 +23,13 @@ export function reload_userinfo($this) {
     if ($errcode.indexOf($data.code) != -1) {
       do_logout($this)
     }
-    // if ($this.userinfo['validity_time'] != -1) {
-    //   do_logout($this)
-    // }
     $this.userinfo = $data.data;
+    // 设置脑机LED
+    if ($data.data.light_status * 1 === 1) {
+      game_store.setters.setLED(true);
+    } else {
+      game_store.setters.setLED(false);
+    }
     // 联名活动要用
     wx.setStorageSync("phone", $this.userinfo.phone);
     $this.userinfo.birthday = formatBirthday($this.userinfo.birthday)
@@ -59,7 +61,7 @@ export function reload_userinfo($this) {
     //停止下拉刷新
     wx.stopPullDownRefresh()
     wx.hideLoading()
-  }).catch((err)=>{
+  }).catch((err) => {
     // do_logout($this);
     wx.showToast({
       title: "获取用户信息失败",
@@ -84,7 +86,7 @@ function do_logout($this) {
       try {
         $this.change_login_status()
       } catch
-      (e) {
+        (e) {
         console.log(e)
       }
     }

+ 0 - 1
dist/wx/static/vant/image/index.json → static/vant/switch/index.json

@@ -1,7 +1,6 @@
 {
   "component": true,
   "usingComponents": {
-    "van-icon": "../icon/index",
     "van-loading": "../loading/index"
   }
 }

Vissa filer visades inte eftersom för många filer har ändrats