You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
275 lines
0 B
275 lines
0 B
1 year ago
|
<template>
|
||
|
<view class="container">
|
||
|
<u-navbar title="安全设置" bgColor='#D3832A' leftIconColor='#ffffff' titleStyle='color:#ffffff' placeholder
|
||
|
:autoBack="true" leftIconSize='35'></u-navbar>
|
||
|
<view class="list">
|
||
|
<!-- 设置密码 -->
|
||
|
<view class="list_item" style="display: flex;" @click="showEditPwd">
|
||
|
<view class="uni-list-cell-left">
|
||
|
<u-icon class="margin-right-10" name="setting-fill" color="#47beff"></u-icon>
|
||
|
<view>
|
||
|
设置密码:
|
||
|
</view>
|
||
|
</view>
|
||
|
<u-icon name="arrow-right" color="#000"></u-icon>
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
|
||
|
<!-- 弹出层 -- 设置密码 -->
|
||
|
<PopUp ref="EditPwdPop">
|
||
|
<!-- 原密码 -->
|
||
|
<view class="flex-c-sb">
|
||
|
<view class="EditPwdPop-title">
|
||
|
原密码:
|
||
|
</view>
|
||
|
<u-input placeholder="原密码" border="none" :input="handleTrim('oldPwd')" v-model="editPwdForm.oldPwd"
|
||
|
:password="!ShowPwdObj.oldPwd" clearable>
|
||
|
<template #suffix>
|
||
|
<view @click="isShowPwd('oldPwd')">
|
||
|
<u-icon v-if="ShowPwdObj.oldPwd" name="eye-off" size="40"></u-icon>
|
||
|
<u-icon v-else name="eye-fill" size="40"></u-icon>
|
||
|
</view>
|
||
|
</template>
|
||
|
</u-input>
|
||
|
</view>
|
||
|
|
||
|
<!-- 新密码 -->
|
||
|
<view class="flex-c-sb">
|
||
|
<view class="EditPwdPop-title">
|
||
|
新密码:
|
||
|
</view>
|
||
|
<u-input placeholder="新密码" border="none" :input="handleTrim('newPwd1')"
|
||
|
onkeypress="javascript:if(event.keyCode == 32)event.returnValue = false;" v-model="editPwdForm.newPwd1"
|
||
|
:password="!ShowPwdObj.newPwd1" clearable>
|
||
|
<template #suffix>
|
||
|
<view @click="isShowPwd('newPwd1')">
|
||
|
<u-icon v-if="ShowPwdObj.newPwd1" name="eye-off" size="40"></u-icon>
|
||
|
<u-icon v-else name="eye-fill" size="40"></u-icon>
|
||
|
</view>
|
||
|
</template>
|
||
|
</u-input>
|
||
|
</view>
|
||
|
|
||
|
<!-- 确认新密码 -->
|
||
|
<view class="flex-c-sb">
|
||
|
<view class="EditPwdPop-title">
|
||
|
确认新密码:
|
||
|
</view>
|
||
|
<u-input placeholder="确认新密码" border="none" :input="handleTrim('newPwd2')" v-model.trim="editPwdForm.newPwd2"
|
||
|
:password="!ShowPwdObj.newPwd2" clearable>
|
||
|
<template #suffix>
|
||
|
<view @click="isShowPwd('newPwd2')">
|
||
|
<u-icon v-if="ShowPwdObj.newPwd2" name="eye-off" size="40"></u-icon>
|
||
|
<u-icon v-else name="eye-fill" size="40"></u-icon>
|
||
|
</view>
|
||
|
</template>
|
||
|
</u-input>
|
||
|
</view>
|
||
|
|
||
|
</PopUp>
|
||
|
</template>
|
||
|
|
||
|
<script lang="ts" setup>
|
||
|
import {
|
||
|
onShow,
|
||
|
onLoad,
|
||
|
onHide,
|
||
|
onPullDownRefresh
|
||
|
} from '@dcloudio/uni-app'
|
||
|
import { reactive, ref, toRefs } from 'vue';
|
||
|
import { editPassword } from '@/api/user.js';
|
||
|
import {
|
||
|
hexMD5
|
||
|
} from '@/utils/md5.js'
|
||
|
|
||
|
onPullDownRefresh(() => {
|
||
|
const timer = setTimeout(() => {
|
||
|
// 关闭下拉刷新
|
||
|
uni.stopPullDownRefresh()
|
||
|
clearTimeout(timer)
|
||
|
}, 500)
|
||
|
})
|
||
|
|
||
|
const details = reactive({
|
||
|
//
|
||
|
scanStateList: [],
|
||
|
// 选中的索引 -- 默认为关闭
|
||
|
scanStateChooseIndex: 0
|
||
|
})
|
||
|
|
||
|
// 组件实例
|
||
|
/** 修改密码 */
|
||
|
const EditPwdPop = ref()
|
||
|
|
||
|
const ShowPwdObj = reactive({
|
||
|
oldPwd: false,
|
||
|
newPwd1: false,
|
||
|
newPwd2: false,
|
||
|
})
|
||
|
|
||
|
const editPwdForm = reactive({
|
||
|
oldPwd: '',
|
||
|
newPwd1: '',
|
||
|
newPwd2: '',
|
||
|
})
|
||
|
|
||
|
/** 退出登录 */
|
||
|
function removeall() {
|
||
|
const res = uni.getStorageInfoSync();
|
||
|
res.keys.map(item => {
|
||
|
if (item == 'loginuser' || item == 'HistoryDate' || item == 'setip' || item == 'checkname' || item.indexOf('IMAGE_CACHE_INFO') != -1) {
|
||
|
return
|
||
|
}
|
||
|
uni.removeStorageSync(item)
|
||
|
})
|
||
|
uni.reLaunch({
|
||
|
url: '/pages/login/login'
|
||
|
})
|
||
|
console.log(res.currentSize);
|
||
|
console.log(String(res.limitSize));
|
||
|
}
|
||
|
|
||
|
/** 显示设置密码弹窗 */
|
||
|
const showEditPwd = () => {
|
||
|
EditPwdPop.value.setDetails({
|
||
|
title: '设置密码',
|
||
|
showPopUp: true,
|
||
|
async success() {
|
||
|
console.log('editPwdForm :>> ', editPwdForm);
|
||
|
let _isReturn = false
|
||
|
// 循环验证密码是否符合规则
|
||
|
for (let key in editPwdForm) {
|
||
|
if (editPwdForm[key].length < 6) {
|
||
|
_isReturn = true
|
||
|
uni.showToast({
|
||
|
title: '请输入6位以上密码',
|
||
|
icon: 'none'
|
||
|
})
|
||
|
// 退出循环
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (_isReturn) return
|
||
|
|
||
|
// 原密码
|
||
|
let { password } = <{ password : string; tenantId : string; username : string }>uni.getStorageSync('loginuser')
|
||
|
if (editPwdForm.oldPwd !== password) {
|
||
|
uni.showToast({
|
||
|
title: '密码与原密码不一致',
|
||
|
icon: 'none'
|
||
|
})
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// 两次密码比对
|
||
|
if (editPwdForm.newPwd1 !== editPwdForm.newPwd2) {
|
||
|
uni.showToast({
|
||
|
title: '确认密码与新密码不一致',
|
||
|
icon: 'none'
|
||
|
})
|
||
|
return
|
||
|
}
|
||
|
|
||
|
/** 加密密码 */
|
||
|
const submitData = {
|
||
|
oldPassword: hexMD5(editPwdForm.oldPwd),
|
||
|
newPassword: hexMD5(editPwdForm.newPwd1),
|
||
|
newPassword1: hexMD5(editPwdForm.newPwd2),
|
||
|
}
|
||
|
|
||
|
const response = await editPassword(submitData)
|
||
|
|
||
|
console.log('response :>> ', response);
|
||
|
if (response.msg) uni.showToast({
|
||
|
title: response.msg,
|
||
|
icon: 'none'
|
||
|
})
|
||
|
if (response.code !== 200) return
|
||
|
removeall()
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
/** 处理文本输入 -- 去除收尾空格 */
|
||
|
const handleTrim = (item) => {
|
||
|
editPwdForm[item] = uni.$u.trim(editPwdForm[item].trim(), 'all')
|
||
|
}
|
||
|
|
||
|
/** 是否显示密码 */
|
||
|
const isShowPwd = (item) => {
|
||
|
ShowPwdObj[item] = !ShowPwdObj[item]
|
||
|
}
|
||
|
|
||
|
const { } = toRefs(details)
|
||
|
</script>
|
||
|
|
||
|
<style lang="scss" scoped>
|
||
|
.container {
|
||
|
width: 100vw;
|
||
|
height: 100vh;
|
||
|
// background: #fff;
|
||
|
}
|
||
|
|
||
|
.list {}
|
||
|
|
||
|
.list_item {
|
||
|
display: flex;
|
||
|
justify-content: space-between;
|
||
|
padding: 20upx;
|
||
|
border-bottom: 2upx solid #eee;
|
||
|
background: #fff;
|
||
|
position: relative;
|
||
|
|
||
|
.uni-list-cell-db {
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
left: 0;
|
||
|
padding: 20upx;
|
||
|
width: 100%;
|
||
|
height: 100%;
|
||
|
text-align: right;
|
||
|
box-sizing: border-box;
|
||
|
}
|
||
|
|
||
|
&:last-child {
|
||
|
border-bottom: 0px;
|
||
|
}
|
||
|
|
||
|
.uni-list-cell-left {
|
||
|
display: inline-flex;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.margin-right-10 {
|
||
|
margin-right: 10upx;
|
||
|
}
|
||
|
|
||
|
// 修改密码弹窗
|
||
|
.EditPwdPop-title {
|
||
|
position: relative;
|
||
|
width: 200upx;
|
||
|
flex: none;
|
||
|
|
||
|
&::after {
|
||
|
right: 20upx;
|
||
|
top: 50%;
|
||
|
transform: translateY(-50%);
|
||
|
position: absolute;
|
||
|
content: '';
|
||
|
display: block;
|
||
|
width: 2upx;
|
||
|
height: 40upx;
|
||
|
background: #000;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.flex-c-sb {
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
margin: 20upx 0 10upx;
|
||
|
border-bottom: 1upx solid #aaa;
|
||
|
padding: 20upx 0 10upx;
|
||
|
}
|
||
|
</style>
|