廖井涛
2024-06-05 1afec433c7d9eb946a2281613923072633f967ee
用户修改密码
5个文件已修改
2个文件已添加
266 ■■■■■ 已修改文件
north-glass-erp/northglass-erp/src/router/index.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/system/userPassWord/UpdateUserPassWord.vue 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/northglass-erp/src/views/system/userPassWord/UserPassWord.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/controller/userInfo/UserController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/UserMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
north-glass-erp/src/main/resources/mapper/userInfo/User.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | 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>