north-glass-erp/northglass-erp/src/router/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
north-glass-erp/northglass-erp/src/views/system/userPassWord/UpdateUserPassWord.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
north-glass-erp/northglass-erp/src/views/system/userPassWord/UserPassWord.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
north-glass-erp/src/main/java/com/example/erp/controller/userInfo/UserController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/UserMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
north-glass-erp/src/main/resources/mapper/userInfo/User.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
north-glass-erp/northglass-erp/src/router/index.js
@@ -61,6 +61,23 @@ } ] }, { path:'userPassWord', name: 'userPassWord', component: () => import('../views/system/userPassWord/userPassWord.vue'), children:[ { path: 'updateUserPassWord', name: 'updateUserPassWord', component: () => import('../views/system/userPassWord/UpdateUserPassWord.vue') }, { name:'userPassWord', path: '', redirect:'/main/userPassWord/updateUserPassWord' } ] }, //sd模块 { north-glass-erp/northglass-erp/src/views/system/userPassWord/UpdateUserPassWord.vue
New file @@ -0,0 +1,138 @@ <script setup lang="ts"> import { reactive, ref } from 'vue' import type { FormProps,FormInstance, FormRules } from 'element-plus' import {ElMessage,ElMessageBox} from "element-plus"; import request from "@/utils/request"; import {Avatar, UserFilled} from "@element-plus/icons-vue"; import useUserInfoStore from "@/stores/userInfo"; import {useRoute, useRouter} from "vue-router"; const router = useRouter() const route = useRoute() const userStore = useUserInfoStore() console.log(userStore.user.id) //注册用户参数 const register = reactive({ userId: userStore.user.id, oldPassword: '', password: '', confirmPassword:'' }) const oldPassword = (rule: any, value: any, callback: any) => { if (value.trim() === '') { callback(new Error('旧密码不能为空')) }else{ callback() } } const checkPassword = (rule: any, value: any, callback: any) => { if (value.trim() === '') { callback(new Error('新密码不能为空')) }else if(value.length>16 || value.length<5){ callback(new Error('密码长度不能低于5或超过16')) }else{ callback() } } const checkConfirmPassword = (rule: any, value: any, callback: any) => { if (value.trim() === '') { callback(new Error('确认密码不能为空')) }else if(value !== register.password){ callback(new Error('两次密码不相同')) }else if(value.length>16 || value.length<5){ callback(new Error('密码长度不能低于5或超过16')) }else{ callback() } } const ruleFormRef = ref<FormInstance>() const rules = reactive<FormRules<typeof register>>({ password:[{ validator: checkPassword, trigger: 'blur' }], confirmPassword:[{ validator: checkConfirmPassword, trigger: 'blur' }] // loginName: [{ validator: validateString, trigger: 'blur' }] }) const submitForm = (formEl: FormInstance | undefined) => { if (!formEl) return formEl.validate((valid) => { if (valid) { register.password = btoa(register.password) register.oldPassword = btoa(register.oldPassword) request.post('/user/updatePassWord', register).then((res) => { if (res.data === true) { ElMessage.success(`修改成功`) router.push("/login") } else { ElMessage.error('旧密码错误') return false } }).catch(error => { ElMessage.error("服务器连接失败") return false }) } }) } </script> <template> <div id="main-div"> <div id="register"> <el-form label-width="100px" :model="register" ref="ruleFormRef" status-icon :rules="rules" > <el-form-item label="旧密码:" prop="oldPassword"> <el-input autocomplete="off" type="text" style="-webkit-text-security: disc" v-model="register.oldPassword" /> </el-form-item> <el-form-item label="新密码:" prop="password"> <el-input autocomplete="off" type="text" style="-webkit-text-security: disc" v-model="register.password" /> </el-form-item> <el-form-item label="确认密码:" prop="confirmPassword"> <el-input autocomplete="off" type="text" style="-webkit-text-security: disc" v-model="register.confirmPassword" /> </el-form-item> <el-form-item > <el-button type="primary" @click="submitForm(ruleFormRef)" >修改 </el-button> </el-form-item> </el-form> </div> </div> </template> <style scoped> h2{ text-align: center; width: 100vw; margin-top: 10vh; } #register{ background-color: #FAFAFA; width: 50vw; height: 50vh; border-radius: 12px; box-shadow: 0 8px 16px 0 rgba(0,0,0,0), 0 6px 5px 0 rgba(0,0,0,0.19); display:flex; align-items:center; justify-content:center; min-height: 280px; } .el-form{ max-width: 300px; } </style> north-glass-erp/northglass-erp/src/views/system/userPassWord/UserPassWord.vue
New file @@ -0,0 +1,60 @@ <script setup> import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue" import {useRouter,useRoute,onBeforeRouteUpdate} from "vue-router" import {useI18n} from "vue-i18n" const { t } = useI18n() const router = useRouter() const route = useRoute() let indexFlag=$ref(1) function changeRouter(index){ indexFlag=index } </script> <template> <div id="main-div"> <div id="div-title"> <el-breadcrumb :separator-icon="ArrowRight"> <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/userPassWord/updateUserPassWord' }">修改密码</el-breadcrumb-item> </el-breadcrumb> </div> <div id="main-body"> <router-view :key="route.fullPath" /> </div> </div> </template> <style scoped> #main-div{ width: 99%; height: 100%; } #div-title{ height: 2%; width: 100%; } #searchButton{ margin-top: -5px; margin-left: 1rem; } #searchButton1{ //margin-left: 10rem; } /*main-body样式*/ #main-body{ width: 100%; height: 95%; margin-top: 1%; } #select{ margin-left:0.5rem; } :deep(.indexTag .el-breadcrumb__inner){ color: #5CADFE !important; } </style> north-glass-erp/src/main/java/com/example/erp/controller/userInfo/UserController.java
@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.Map; @RestController //注解user控制器,挂载到springboot当中 @RequestMapping("/user") //注解前端异步请求如:localhost:8080/user public class UserController { @@ -55,4 +57,9 @@ //return } @ApiOperation("修改密码") @PostMapping("/updatePassWord") public Result updatePassWord(@RequestBody Map<String,Object> object){ return Result.seccess( userService.updatePassWord(object)); } } north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/UserMapper.java
@@ -18,6 +18,8 @@ User findOne(Integer id); User findOneLoginName(String LoginName); User findOnePassWord(Integer id,String passWord); @Select("select count(id) FROM `user` where login_name=#{userName} and password=#{password} ") int checkUser(@Param("userName") String userName,@Param("password") String password); @@ -30,4 +32,6 @@ List<String> getUserRole(Integer id); Boolean userDelete(Integer id); Boolean updatePassWordById(Integer id,String passWord); } north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java
@@ -7,6 +7,7 @@ import com.example.erp.controller.dto.UserDTO; import com.example.erp.entity.userInfo.PermissionBasic; import com.example.erp.entity.userInfo.Role; import com.example.erp.entity.userInfo.SysError; import com.example.erp.entity.userInfo.User; import com.example.erp.mapper.userInfo.*; import com.example.erp.tools.TokenTools; @@ -15,6 +16,7 @@ import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.util.Collections; import java.util.HashMap; @@ -80,6 +82,32 @@ return returnUser; } @Transactional public Boolean updatePassWord(Map<String,Object> object) { boolean saveState = false; int userId =0; String oldPassWord = ""; String passWord = ""; if (object.get("userId") != null) { userId = Integer.parseInt(object.get("userId").toString()); } if (object.get("oldPassword") != null) { oldPassWord = object.get("oldPassword").toString(); } if (object.get("password") != null) { passWord = object.get("password").toString(); } User user =userMapper.findOnePassWord(userId,oldPassWord); if (user!=null){ if (userMapper.updatePassWordById(userId,passWord)){ saveState = true; } } return saveState; } /*----------------新版本登陆*/ public UserDTO doLogin(UserDTO userDTO) { User user = userMapper.selectOne(new QueryWrapper<User>(). north-glass-erp/src/main/resources/mapper/userInfo/User.xml
@@ -41,6 +41,12 @@ where login_name=#{LoginName} </select> <select id="findOnePassWord" > SELECT * FROM erp_user_info.user where id=#{id} and password=#{passWord} </select> <insert id="register" useGeneratedKeys="true" keyProperty="id"> insert erp_user_info.user (password,user_name) @@ -66,4 +72,10 @@ set state =0 where id = #{id} </update> <update id="updatePassWordById"> update erp_user_info.user set password=#{passWord},update_time=now() where id=#{id} </update> </mapper>