eims-ui-mobile/src/pages.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
eims-ui-mobile/src/pages/maint/maint-st.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
eims-ui-mobile/src/pages/my/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
eims-ui-mobile/src/pages/my/password.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
eims-ui-mobile/src/service/app/user.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
eims/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
eims-ui-mobile/src/pages.json
@@ -165,6 +165,15 @@ } }, { "path": "pages/my/password", "type": "page", "layout": "default", "needLogin": true, "style": { "navigationBarTitleText": "ä¿®æ¹å¯ç " } }, { "path": "pages/repair/repair-add", "type": "page", "layout": "default", eims-ui-mobile/src/pages/maint/maint-st.vue
@@ -138,7 +138,7 @@ // åæç¶æ const status = ref<string>('0') // é»è®¤ä¸ºå¾ ä¿å »ç¶æ const equName = ref<string>('-1') const filterDate = ref<string>('1') const filterDate = ref<string>('0') const filterDateList = ref<Record<string, any>[]>([ { label: 'æææ°æ®', value: '0' }, eims-ui-mobile/src/pages/my/index.vue
@@ -16,6 +16,7 @@ <wd-cell title="人å管ç" icon="usergroup" is-link custom-icon-class="icon-color-base" @click="handleInfo" /> </wd-cell-group> <wd-cell-group border class="mt-2"> <wd-cell title="ä¿®æ¹å¯ç " icon="keywords" is-link custom-icon-class="icon-color-base" @click="handlePwd" /> <wd-cell title="éåºç»å½" icon="login" is-link custom-icon-class="icon-color-base" @click="handleLogout" /> </wd-cell-group> </view> @@ -60,6 +61,12 @@ icon: 'none', }) } function handlePwd() { uni.navigateTo({ url: '/pages/my/password' }) } </script> <style lang="scss" scoped> eims-ui-mobile/src/pages/my/password.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,132 @@ <route lang="json5" type="page"> { layout: 'default', needLogin: true, "style": { "navigationBarTitleText": "ä¿®æ¹å¯ç " } } </route> <template> <view class="container"> <wd-form ref="formRef" :model="form"> <wd-cell-group custom-class="cell-group" border> <wd-input label="æ§å¯ç " label-width="100px" clearable show-word-limit prop="oldPassword" show-password v-model="form.oldPassword" placeholder="请è¾å ¥æ§å¯ç " :rules="[{ required: true, message: 'æ§å¯ç ä¸è½ä¸ºç©º' }]" /> <wd-input label="æ°å¯ç " label-width="100px" clearable show-word-limit prop="newPassword" show-password v-model="form.newPassword" placeholder="请è¾å ¥æ°å¯ç " :rules="[ { required: true, message: 'æ°å¯ç ä¸è½ä¸ºç©º' }, { validator: validatePassword }, ]" /> <wd-input label="确认æ°å¯ç " label-width="100px" clearable show-word-limit prop="confirmNewPassword" show-password v-model="form.confirmNewPassword" placeholder="è¯·åæ¬¡è¾å ¥æ°å¯ç " :rules="[ { required: true, message: '确认æ°å¯ç ä¸è½ä¸ºç©º' }, { validator: validatePassword }, { validator: (value) => value === form.newPassword, message: '两次è¾å ¥çå¯ç ä¸ä¸è´' } ]" /> </wd-cell-group> <view class="footer"> <wd-button type="primary" class="mt-6" size="large" block @click="submit">æäº¤</wd-button> </view> </wd-form> </view> </template> <script lang="ts" setup> import { ref, reactive } from 'vue' import { updatePassword } from '@/service/app/user' import { useUserStore, useAccessStore, useSystemConfigStore } from '@/store' const userStore = useUserStore() const accessStore = useAccessStore() const configStore = useSystemConfigStore() const form = reactive({ oldPassword: '', newPassword: '', confirmNewPassword: '' }) const formRef = ref() const validatePassword = (value) => { if (value.length < 6) { return Promise.reject('å¯ç é¿åº¦ä¸è½å°äº6ä½') } if (value.length > 20) { return Promise.reject('å¯ç é¿åº¦ä¸è½è¶ è¿20ä½') } return Promise.resolve() } const submit = () => { formRef.value.validate().then(({ valid, errors }) => { if (valid) { updatePassword(form.oldPassword, form.newPassword) .then((response) => { if (response.code === 200) { uni.showToast({ title: 'ä¿®æ¹å¯ç æå', icon: 'success', }) userStore.clearUserInfo() accessStore.clearAccessInfo() configStore.clearConfigInfo() uni.reLaunch({ url: '/pages/login/index', }) } else { uni.showToast({ title: response.msg || 'ä¿®æ¹å¯ç 失败', icon: 'error', }) } }) .catch((error) => { uni.showToast({ title: error.msg || 'ä¿®æ¹å¯ç 失败', icon: 'error', }) }) } }) } </script> <style lang="scss" scoped> .footer { margin: 20px; } </style> eims-ui-mobile/src/service/app/user.ts
@@ -148,3 +148,14 @@ ...(options || {}), }); } /** ä¿®æ¹å¯ç POST /system/user/profile/updatePwd */ export async function updatePassword(oldPassword: string, newPassword: string) { return request<unknown>('/system/user/profile/updatePwd', { method: 'PUT', data: { oldPassword, newPassword, }, }); } eims/ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java
@@ -1,5 +1,6 @@ package org.dromara.web.service.impl; import cn.dev33.satoken.secure.BCrypt; import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.collection.CollUtil; @@ -90,7 +91,7 @@ newUser.setUserName(authUserData.getUsername()); newUser.setEmail(authUserData.getEmail()); newUser.setNickName(authUserData.getNickname()); newUser.setPassword("Initial123@"); // åå§å¯ç é符åå®å ¨çç¥ newUser.setPassword(BCrypt.hashpw("123456")); // åå§å¯ç é符åå®å ¨çç¥ newUser.setStatus("0"); userMapper.insert(newUser); // å设åå¨æå ¥æ¹æ³