diff --git a/src/components/changePassword.vue b/src/components/changePassword.vue index 10e0d7a..70ab0a1 100644 --- a/src/components/changePassword.vue +++ b/src/components/changePassword.vue @@ -133,8 +133,7 @@ const rules = reactive({ {required: true, message: '新密码不能为空', trigger: 'blur'}, { validator: (rule, value, callback) => { - // 新增中文检测逻辑 - if (!/^[a-zA-Z0-9\W_]+$/.test(value)) { + if (!/^[a-zA-Z0-9!@#$%^&*()-_+={}[\]|\\:;"'<>,.?/~\`]+$/.test(value)) { callback(new Error('密码只能包含数字、字母或符号')); } else if (value === passwd.oldPassword) { callback(new Error('新密码不能与旧密码一致')) @@ -179,19 +178,20 @@ const changePassword = async function () { } const result = await API({url: '/admin/password', data: params}) - console.log('@@@@@@@@@@@修改密码结果:', result) - if (result.code === 0){ - ElMessage.error('原密码错误') - } + console.log('修改密码结果:', result) + if (result.code === 200) { // 使用命名路由跳转 //await router.push({ name: 'PasswordSuccess' }); - + ElMessage.success('修改密码成功'); // 或者使用路径跳转(确保大小写完全匹配) await router.push('/PasswordSuccess'); - ElMessage.success('修改密码成功'); + resetFields(); + }else if (result.code === 0){ + ElMessage.error('原密码错误') + }else if(result.code === 400){ // 显示失败弹窗 console.log('修改密码失败') @@ -200,7 +200,6 @@ const changePassword = async function () { } } catch (error) { - console.log('re:', result) console.error('修改密码失败', error) ElMessage.error('操作失败') // 抛出错误让外层捕获,保持finally正常执行 @@ -208,46 +207,13 @@ const changePassword = async function () { } } -// 修改密码接口调用方法(模拟始终成功) -// const changePassword = async function () { -// try { -// // 模拟API调用 -// const result = { -// status: 200, -// data: {success: true, message: '密码修改成功'} -// }; - -// console.log('修改密码结果:', result); - -// // 统一处理成功逻辑 -// if (result.status === 200 ) { -// // 显示成功提示 -// ElMessage.success(result.data.message || '修改密码成功'); - -// // 重置表单字段 -// resetFields(); - -// router.replace ('/PasswordSuccess'); - - -// return result; -// } else { -// // 处理API返回但状态非成功的情况 -// const errorMsg = result.data.message || '密码修改失败'; -// ElMessage.error(errorMsg); -// throw new Error(errorMsg); -// } -// } catch (error) { -// // 处理网络错误或API异常 -// console.error('修改密码失败:', error); -// ElMessage.error(error.message || '操作失败,请重试'); -// throw error; -// } -// }; + // 表单提交与重置 const resetFields = () => { - passwdFormRef.value.resetFields() + if (passwdFormRef.value) { + passwdFormRef.value.resetFields() + } errorMsg.value = '' } diff --git a/src/views/permissions/permission.vue b/src/views/permissions/permission.vue index d14fe24..940f3f5 100644 --- a/src/views/permissions/permission.vue +++ b/src/views/permissions/permission.vue @@ -499,7 +499,7 @@ const permissionEdit = async function () { market: permissionEditObj.value.market,//地区 postiton: permissionEditObj.value.postiton,//职位 roleId: permissionEditObj.value.roleId,//角色id - machineId: permissionEditObj.value.machineId,//机器码 + machineId: permissionEditObj.value.machineIds[0],//机器码 machineIds: permissionEditObj.value.machineIds[1],//机器码 password: permissionEditObj.value.password,// remark: permissionEditObj.value.remark//备注 @@ -579,6 +579,15 @@ const delRoleConfirm = async function () { } const handleAddRole = async function () { try { + await new Promise((resolve, reject) => { + Ref.value.validate((valid) => { + if (valid) { + resolve(); // 验证通过,继续执行后续代码 + } else { + reject(new Error('请检查并完善表单信息')); // 验证失败,抛出错误 + } + }); + }); const res = await API({ @@ -723,6 +732,20 @@ onMounted(async function () { await getRoleList() await getAdminData() }) + + const Rolerules = reactive({ + roleName: [ + { required: true, message: '请输入角色名称', trigger: 'blur' }, + { min: 2, max: 20, message: '角色名称长度应在2-20个字符之间', trigger: 'blur' } + ], + market: [ + { required: true, message: '请选择所属地区', trigger: 'change' } + ], + grade: [ + { required: true, message: '请输入优先级', trigger: 'blur' }, + { pattern: /^[1-9]\d{0,2}$/, message: '优先级应为1-999的数字', trigger: 'blur' } + ] + });