绿满眶商城微信小程序-uniapp
zxl
4 天以前 c9928dd4f6d25e2339ea1400f59ec58674a927a7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// TODO 第一版本暂无此功能 后续优化以及更新
<template>
  <view class="face-login">
    <u-cell-group>
      <u-cell-item class="border-top" :arrow="false" title="面容登录">
        <u-switch slot="right-icon" @change="faceSwitchChange" active-color="#1abc9c" size="40" v-model="checked"></u-switch>
      </u-cell-item>
    </u-cell-group>
    <view class="describe">开启后可使用面容认证完成快捷登录,设置仅对本机生效。</view>
  </view>
</template>
 
<script>
import '@/components/uview-components/uview-ui'
import storage from "@/utils/storage.js";
import { setBiolofy } from "@/api/passport.js";
 
export default {
  data() {
    return {
      lightColor: this.$lightColor,
      checked: true,
    };
  },
  methods: {
    faceSwitchChange(value) {
      if (value === true) {
        const res = uni.getSystemInfoSync();
        plus.device.getInfo({
          success: function (e) {
            let params = {
              mobile_type: res.model,
              secret_key: e.uuid,
            };
            setBiolofy(params).then((res) => {
              if (res.statusCode === 200) {
                storage.setFaceLogin(true);
              }
            });
          },
          fail: function (e) {
            //plus.nativeUI.toast('获取设备信息错误:' + JSON.stringify(e));
            console.error("getDeviceInfo failed: " + JSON.stringify(e));
          },
        });
      } else {
        storage.setFaceLogin(false);
      }
    },
  },
  onLoad() {
    // #ifdef APP-PLUS
    uni.checkIsSupportSoterAuthentication({
      success(res) {
        if (!res.supportMode.find((e) => e === "facial")) {
          plus.nativeUI.toast("此设备不支持面部识别");
          uni.navigateBack();
        }
        uni.checkIsSoterEnrolledInDevice({
          checkAuthMode: "facial",
          success(_res) {
            if (!_res.isEnrolled) {
              plus.nativeUI.toast("此设备未录入面部信息");
              uni.navigateBack();
            }
          },
          fail(_err) {
            // plus.nativeUI.toast(JSON.stringify(_err));
            uni.navigateBack();
          },
        });
      },
      fail(err) {
        // plus.nativeUI.toast(JSON.stringify(err));
        uni.navigateBack();
      },
    });
    this.checked = storage.getFaceLogin() || false;
    // #endif
  },
};
</script>
 
<style lang="scss" scoped>
.face-login {
}
</style>