123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288 |
- <template>
- <view :data-theme="'theme-' + proxy.$settingStore.themeColor.name" class="secure-container">
- <view class="content-section">
- <view class="menu-list mt0 mlr0">
- <view></view>
- <image style="width: 100%; height: 160px" src="@/static/images/index/banner2.jpg" mode="widthFix"></image>
- </view>
- <view class="menu-list mt0 mlr0">
- <view class="list-cell list-cell-arrow" @click="handleUserModal('修改手机号')">
- <view class="menu-item">
- <view class="title">手机号</view>
- <view style="margin: 0 15px 0 auto; font-size: 14px; color: #909399">{{ user.phonenumber }}</view>
- </view>
- </view>
- <view class="list-cell list-cell-arrow" @click="handleUserModal('修改密码')">
- <view class="menu-item">
- <view class="title">密码</view>
- <view style="margin: 0 15px 0 auto; font-size: 14px; color: #909399">{{ user.password ? "已设置" : "未设置" }}</view>
- </view>
- </view>
- </view>
- <view class="menu-list mt0 mlr0">
- <!-- #ifdef APP-PLUS || MP-WEIXIN -->
- <view class="list-cell list-cell-arrow" @click="proxy.$modal.showToast('模块建设中~')">
- <!-- <view class="list-cell list-cell-arrow" @click="proxy.$tab.navigateTo(`/pages/mine/secure/fingerprint/index`)"> -->
- <view class="menu-item">
- <view class="title">指纹登录</view>
- </view>
- </view>
- <!-- #endif -->
- <view class="list-cell list-cell-arrow" @click="proxy.$modal.showToast('模块建设中~')">
- <view class="menu-item">
- <view class="title">人脸</view>
- </view>
- </view>
- <view class="list-cell list-cell-arrow" @click="proxy.$modal.showToast('模块建设中~')">
- <view class="menu-item">
- <view class="title">手势密码</view>
- </view>
- </view>
- </view>
- <view class="menu-list mt0 mlr0">
- <view class="list-cell list-cell-arrow" @click="proxy.$tab.navigateTo(`/pages/mine/secure/loginLog/index`)">
- <view class="menu-item">
- <view class="title">登录日志</view>
- </view>
- </view>
- <view class="list-cell list-cell-arrow" @click="proxy.$modal.showToast('模块建设中~')">
- <view class="menu-item">
- <view class="title">常用设备管理</view>
- </view>
- </view>
- </view>
- <view class="menu-list mt0 mlr0" @click="handleUserModal('手机号验证')">
- <view class="list-cell">
- <view class="menu-item">
- <view class="button error">注 销 账 号</view>
- </view>
- </view>
- </view>
- </view>
- </view>
- <u-modal :show="modalShow" :showConfirmButton="true" :showCancelButton="true" @cancel="handleCancel()" @close="handleCancel()" @confirm="handleConfirm()">
- <view class="slot-content" style="width: 100%">
- <view v-if="modalTitle === '修改手机号'">
- <view class="mb15" style="text-align: center; color: #000; font-weight: 600">{{ modalTitle }}</view>
- <u-input v-model="phone" placeholder="请输入手机号" :maxlength="11" border="bottom" />
- <u-input v-model="verify" placeholder="请输入验证码" :maxlength="6" border="bottom">
- <template #suffix>
- <button class="verify" @click="getVerifyCode">{{ !useStore.codeTime ? "获取验证码" : useStore.codeTime + "s" }}</button>
- </template>
- </u-input>
- </view>
- <view v-if="modalTitle === '修改密码'">
- <view class="mb15" style="text-align: center; color: #000; font-weight: 600">{{ modalTitle }}</view>
- <u-input class="mb15" v-model="oldPassword" placeholder="请输入旧密码" :password="oldPasswordBool" border="bottom">
- <template #suffix>
- <text :class="!oldPasswordBool ? 'iconfont oaIcon-eye' : 'iconfont oaIcon-eye-close'" @click="oldPasswordBool = !oldPasswordBool"></text>
- </template>
- </u-input>
- <u-input class="mb15" v-model="newPassword" placeholder="请输入新密码" :password="newPasswordBool" border="bottom">
- <template #suffix>
- <text :class="!newPasswordBool ? 'iconfont oaIcon-eye' : 'iconfont oaIcon-eye-close'" @click="newPasswordBool = !newPasswordBool"></text>
- </template>
- </u-input>
- <u-input v-model="confirmPassword" placeholder="请再次输入新的密码" :password="confirmPasswordBool" border="bottom">
- <template #suffix>
- <text :class="!confirmPasswordBool ? 'iconfont oaIcon-eye' : 'iconfont oaIcon-eye-close'" @click="confirmPasswordBool = !confirmPasswordBool"></text>
- </template>
- </u-input>
- </view>
- <view v-if="modalTitle === '手机号验证'">
- <view class="mb5" style="text-align: center; color: #000; font-weight: 600">{{ modalTitle }}</view>
- <view class="mb15" style="text-align: center; color: #000; font-size: 0.75rem; width: 90%; margin: 0 auto"> 请填写完整的手机号 {{ user.phonenumber }} 以验证身份 </view>
- <u-input v-model="phone" placeholder="请输入手机号" :maxlength="11" border="bottom" />
- <u-input v-model="verify" placeholder="请输入验证码" :maxlength="6" border="bottom">
- <template #suffix>
- <button class="verify" @click="getVerifyCode">{{ !useStore.codeTime ? "获取验证码" : useStore.codeTime + "s" }}</button>
- </template>
- </u-input>
- </view>
- </view>
- </u-modal>
- </template>
- <script setup>
- import config from "@/config";
- import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
- import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
- import { useStores, commonStores } from "@/store/modules/index";
- import { updateUserProfile, updateUserPwd } from "@/api/system/user";
- const useStore = useStores();
- const { proxy } = getCurrentInstance();
- const data = reactive({
- modalShow: false,
- modalTitle: "",
- oldPassword: undefined,
- oldPasswordBool: true,
- newPassword: undefined,
- newPasswordBool: true,
- confirmPassword: undefined,
- confirmPasswordBool: true,
- phone: undefined,
- verify: undefined,
- });
- const { modalShow, modalTitle, oldPassword, oldPasswordBool, newPassword, newPasswordBool, confirmPassword, confirmPasswordBool, phone, verify } = toRefs(data);
- const { avatar, user, userArr } = toRefs(useStore);
- function handleUserModal(title) {
- modalShow.value = true;
- modalTitle.value = title;
- }
- /** 确定按钮 */
- function handleConfirm() {
- if (modalTitle.value == "修改手机号") {
- useStore.PhoneVerify({
- data: {
- phone: phone.value,
- verify: verify.value,
- },
- success: (res) => {
- userArr.value.phonenumber = phone.value;
- updateUserProfile(userArr.value).then((response) => {
- proxy.$modal.msgSuccess("修改成功");
- handleCancel(); //调用取消按钮
- useStore.getUser();
- });
- },
- error: (res) => {
- return false;
- },
- });
- }
- if (modalTitle.value == "修改密码") {
- if (!oldPassword.value) {
- proxy.$modal.showToast("旧密码不能为空");
- return;
- }
- if (!newPassword.value) {
- proxy.$modal.showToast("新密码不能为空");
- return;
- }
- if (newPassword.value.length < 6 && newPassword.value.length > 20) {
- proxy.$modal.showToast("长度在 6 到 20 个字符");
- return;
- }
- if (!confirmPassword.value) {
- proxy.$modal.showToast("确认密码不能为空");
- return;
- }
- if (confirmPassword.value != newPassword.value) {
- proxy.$modal.showToast("两次输入的密码不一致");
- return;
- }
- updateUserPwd(oldPassword.value, newPassword.value).then((response) => {
- proxy.$modal.msgSuccess("修改成功");
- handleCancel(); //调用取消按钮
- useStore.getUser();
- });
- }
- if (modalTitle.value == "手机号验证") {
- if (phone.value != userArr.value.phonenumber) {
- proxy.$modal.msg("请输入正确的手机号");
- return;
- }
- useStore.PhoneVerify({
- data: {
- phone: phone.value,
- verify: verify.value,
- },
- success: (res) => {
- useStore.UserDel({
- data: {
- id: user.value.userId,
- },
- success: (res) => {
- proxy.$modal.msgSuccess("用户注销成功");
- handleCancel(); //调用取消按钮
- useStore.LogOut().then(() => {
- proxy.$tab.reLaunch("/pages/index");
- });
- },
- });
- },
- error: (res) => {
- return false;
- },
- });
- }
- }
- /** 取消按钮 */
- function handleCancel() {
- modalShow.value = false;
- modalTitle.value = "";
- oldPassword.value = undefined;
- oldPasswordBool.value = true;
- newPassword.value = undefined;
- newPasswordBool.value = true;
- confirmPassword.value = undefined;
- confirmPasswordBool.value = true;
- phone.value = undefined;
- verify.value = undefined;
- }
- /** 点击发送验证码 */
- function getVerifyCode() {
- if (modalTitle.value == "手机号验证" && phone.value != userArr.value.phonenumber) {
- proxy.$modal.msg("请输入正确的手机号");
- return;
- }
- verify.value = undefined;
- useStore.GetCodeImg({
- phone: phone.value,
- success: (res) => {
- proxy.$modal.msgSuccess("发送成功");
- },
- });
- }
- onLoad((options) => {
- useStore.getUser();
- });
- onReady(() => {});
- onShow(() => {
- //调用系统主题颜色
- proxy.$settingStore.systemThemeColor([1]);
- });
- // 自定义导航事件
- onNavigationBarButtonTap((e) => {
- if (e.float == "right") {
- proxy.$tab.navigateTo("/pages/mine/setting/index");
- }
- });
- </script>
- <style lang="scss" scoped></style>
|