jiuyiUniapp/jiuyi2/pages/mine/setting/secondPwd.vue

214 lines
4.5 KiB
Vue

<script setup>
// 设置二级密码
import {
ref,
reactive,
computed,
getCurrentInstance,
} from 'vue'
import {
useStore
} from 'vuex'
import {
onReady,
} from '@dcloudio/uni-app'
// api
import api from '@/api/index.js'
// util
import util from '@/common/js/util.js'
// 加密
import CryptoJS from 'crypto-js';
//
import codeInput from '@/components/mine/codeInput.vue'
// 软键盘
import keyboard from '@/components/public/keyboard/keyboard.vue'
const {
proxy
} = getCurrentInstance()
//
const store = useStore()
// 模式 set设置密码 rePwd确认密码 check验证密码
const mode = ref('set')
// 表单
const form = reactive({
pwd: '',
rePwd: '',
})
// 当前输入表单键
const formKey = ref('pwd')
// 用户信息
const userinfo = computed(() => {
let result = store.state.userinfo
if (result.hasSecondCipher) mode.value = 'check'
return result
})
// 下一步
function handleNext() {
const data = {
...form
}
// 验证必填项
if (!form.pwd) {
util.alert('二级密码不能为空')
}
mode.value = 'rePwd'
formKey.value = 'rePwd'
}
// 确认输入密码
function handleSubmit() {
const data = {
...form
}
console.log('data', data)
// return
// 验证必填项
if (!data.pwd) {
util.alert('二级密码不能为空')
return
}
if (data.pwd !== data.rePwd) {
util.alert({
content: '两次输入密码不一致',
showCancel: false
})
// 密码
form.pwd = ''
form.rePwd = ''
mode.value = 'set'
return
}
//
data.pwd = CryptoJS.MD5(data.pwd).toString()
// 设置二级密码
api.mine.setSecondLevelCipher({
data: {
id: userinfo.value.id,
secondLevelCipher: data.pwd,
}
}).then(rs => {
if (rs.code == 200) {
util.alert('设置成功')
util.getUserinfo()
uni.navigateBack()
return
}
util.alert({
content: rs.msg,
showCancel: false,
})
})
}
// 验证登录密码
function handleCheck() {
const data = {
...form
}
// 验证必填项
if (!data.pwd) {
util.alert('二级密码不能为空')
}
//
data.pwd = CryptoJS.MD5(data.pwd).toString()
// 设置二级密码
api.mine.checkSecondLevelCipher({
data: {
id: userinfo.value.id,
secondLevelCipher: data.pwd,
}
}).then(rs => {
if (rs.code == 200) {
form.pwd = ''
mode.value = 'set'
return
}
util.alert({
content: rs.msg,
showCancel: false,
})
})
}
/**
* 支付键盘回调
* @param {Object} val
*/
function KeyInfo(val) {
// 判断是否输入的是删除键
if (val.keyCode === 8) {
// 删除最后一位
form[formKey.value] = form[formKey.value].slice(0, -1)
return
}
// 如果大于六位
if (form[formKey.value].length >= 6) return
// 判断是否输入的是.
else if (val.keyCode == 190) {
// 输入.无效
} else {
form[formKey.value] += val.key
// passwordArr.push(val.key);
}
}
</script>
<template>
<view class="appbw">
<view class="container ver mt10p" v-if="mode === 'set'">
<view class="title c333 f54">设置二级密码</view>
<view class="content mt50 c666 f32">请设置六位数字的二级密码</view>
<view class="pwd">
<codeInput v-model:modelValue="form.pwd" />
</view>
<view class="btn lg black mtb50 plr50" @click="handleNext">下一步</view>
</view>
<view class="container ver mt10p" v-if="mode === 'rePwd'">
<view class="title c333 f54">确认二级密码</view>
<view class="content mt50 c666 f32">请再次输入刚才设置的二级密码</view>
<view class="pwd">
<codeInput v-model:modelValue="form.rePwd" />
</view>
<view class="btn lg black mtb50 plr50" @click="handleSubmit">确认</view>
</view>
<view class="container ver mt10p" v-if="mode === 'check'">
<view class="title c333 f54">验证二级密码</view>
<view class="content mt50 c666 f32">请输入二级密码用于验证</view>
<view class="inputBox mt50 ptb10 plr30">
<input type="number" :maxlength="6" v-model="form.pwd" :focus="true" placeholder="六位数字密码" />
</view>
<view class="btn lg black mtb50 plr50" @click="handleCheck">验证</view>
</view>
</view>
<!-- 安全键盘 -->
<!-- <cc-defineKeyboard ref="CodeKeyboard" passwrdType="pay" @KeyInfo="KeyInfo" /> -->
<view class="keyboard">
<keyboard ref="CodeKeyboard" passwrdType="pay" @KeyInfo="KeyInfo" />
</view>
</template>
<style lang="scss">
// 软键盘
.keyboard {
position: fixed;
left: 0;
right: 0;
bottom: 0;
background-color: #f8f8f8;
}
</style>