diff --git a/backend/src/main/java/com/backend/mapper/UserMapper.java b/backend/src/main/java/com/backend/mapper/UserMapper.java index 9557b45..30a7933 100644 --- a/backend/src/main/java/com/backend/mapper/UserMapper.java +++ b/backend/src/main/java/com/backend/mapper/UserMapper.java @@ -13,7 +13,7 @@ public interface UserMapper { @Select("select * from user where username=#{username}") User findByUsername(final String username); - @Update("update user set nickname=#{nickname}, update_time=now() where id=#{id}") + @Update("update user set nickname=#{nickname}, phone=#{phone}, email=#{email}, update_time=now() where id=#{id}") void update(final User user); @Update("update user set user_pic=#{url}, update_time=now() where id=#{id}") diff --git a/backend/src/main/java/com/backend/pojo/User.java b/backend/src/main/java/com/backend/pojo/User.java index 88fe3d7..dcefa44 100644 --- a/backend/src/main/java/com/backend/pojo/User.java +++ b/backend/src/main/java/com/backend/pojo/User.java @@ -15,9 +15,12 @@ public class User { private String username;//用户名 @JsonIgnore // let springmvc ignore password when converting object to json private String password;//密码 + private Integer isCourier;//是否是快递员,0-不是,1-是 @NotEmpty @Pattern(regexp = "^\\S{1,10}$") private String nickname;//昵称 + private String phone;//手机号 + private String email;//邮箱 private LocalDateTime createTime;//创建时间 private LocalDateTime updateTime;//更新时间 } diff --git a/frontend/src/View/Layout.vue b/frontend/src/View/Layout.vue index 879625c..d779463 100644 --- a/frontend/src/View/Layout.vue +++ b/frontend/src/View/Layout.vue @@ -3,7 +3,7 @@ - @@ -43,7 +43,10 @@ -
欢迎您: {{ userInfoStore.userInfo.nickname }}
+
欢迎您: + {{ userInfoStore.userInfo.nickname }}{{ userInfoStore.userInfo.isCourier === 1 ? ' 快递员' : ' 用户' }} + +
@@ -128,7 +131,7 @@ const handleCommand = (command) => { background-color: #f5f5f5; .el-aside { - background-color: #ccccd6; + background-color: #5cb3cc; &__logo { height: 120px; diff --git a/frontend/src/View/express/ExpressForm.vue b/frontend/src/View/express/ExpressForm.vue index 0462ff8..15bd3f9 100644 --- a/frontend/src/View/express/ExpressForm.vue +++ b/frontend/src/View/express/ExpressForm.vue @@ -90,17 +90,28 @@ const form = reactive({ "receiverName": "", "receiverPhone": "", "receiverCity": "", - "s_datetime": new Date().toISOString().slice(0, 19).replace('T', ' ') + "s_datetime": new Date(new Date().getTime() + 8 * 60 * 60 * 1000).toISOString().slice(0, 19).replace('T', ' ') + }) -const confirmOrder =() => { - const currentExpressNo = parseInt(form.express_no.replace('SF', '')); - form.express_no = "SF" + (currentExpressNo + 1).toString(); - store.add(form); - ElMessage({ - message: '下单成功!', - type:'success' - }) +const confirmOrder = () => { + try { + const currentExpressNo = parseInt(form.express_no.slice(2)); // 使用 slice 减少计算 + const n = Math.floor(Math.random() * 10) + 1; // 生成 1 到 10 之间的随机数 + form.express_no = `SF${currentExpressNo + n}`; // 将随机数加到当前快递单号上 + store.add(form); + ElMessage({ + message: '下单成功!', + type: 'success' + }); + } catch (error) { + ElMessage({ + message: '下单失败,请检查信息!', + type: 'error' + }); + console.error('下单错误:', error); // 打印错误信息 + } } + diff --git a/frontend/src/View/express/ExpressList.vue b/frontend/src/View/express/ExpressList.vue index 40b9512..e08013a 100644 --- a/frontend/src/View/express/ExpressList.vue +++ b/frontend/src/View/express/ExpressList.vue @@ -21,8 +21,8 @@ 联系电话 {{item.receiverPhone}} - - + + @@ -73,11 +73,14 @@ import { Delete, Edit } from '@element-plus/icons-vue' import { reactive, ref } from 'vue' import { ElMessageBox } from "element-plus"; import { expressStore } from '@/store/express.js' +import {useUserInfoStore} from "@/store/userInfo.js"; const store = expressStore() const item = expressStore() const { expressList } = reactive(store) const dialogVisible = ref(false) +const userInfoStore = useUserInfoStore(); const handleClose = (done: () => void) => { + ElMessageBox.confirm('确认关闭?').then(() => { done() }).catch(() => { @@ -108,6 +111,12 @@ const form = reactive({ "s_datetime": '', }) const modify = (item, index) => { + if (userInfoStore.userInfo.isCourier !== 1) { + ElMessageBox.alert('您没有权限修改快递信息', '提示', { + confirmButtonText: '确定', + }); + return; + } dialogFormVisible.value = true form.senderCity = item.senderCity form.senderName = item.senderName diff --git a/frontend/src/View/user/MyInfo.vue b/frontend/src/View/user/MyInfo.vue deleted file mode 100644 index 24d97bc..0000000 --- a/frontend/src/View/user/MyInfo.vue +++ /dev/null @@ -1,127 +0,0 @@ - - - - - \ No newline at end of file diff --git a/frontend/src/View/user/UserInfo.vue b/frontend/src/View/user/UserInfo.vue index fb454bd..512f1ce 100644 --- a/frontend/src/View/user/UserInfo.vue +++ b/frontend/src/View/user/UserInfo.vue @@ -14,6 +14,12 @@ + + + + + + 提交修改 @@ -43,12 +49,53 @@ const rules = { trigger: 'blur' } ], + phone: [ + {required: true, message: '请输入电话号码', trigger: 'blur'}, + { + pattern: /^1[3-9]\d{9}$/, + message: '请输入正确的手机号码', + trigger: 'blur' + } + ], + email: [ + { required: true, message: '请输入邮箱', trigger: 'blur' }, + { + type: 'email', + message: '请输入正确的邮箱格式', + trigger: 'blur' + }, + { + validator: (rule, value, callback) => { + // 定义邮箱格式的正则表达式 + const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; + if (!value) { + callback(new Error('请输入邮箱')); + } else if (!emailPattern.test(value)) { + callback(new Error('请输入正确的邮箱格式')); + } else { + callback(); + } + }, + trigger: 'blur' + } + ] + } -const updateUserInfo = () => { - userInfoUpdateService(userInfo.value); - ElMessage.success('修改成功') - userInfoStore.setUserInfo(userInfo.value) +const updateUserInfo = async () => { + try { + await userInfoUpdateService(userInfo.value); + userInfoStore.setUserInfo(userInfo.value); + ElMessage.success('修改成功'); + } catch (error) { + let errorMessage = '修改失败,请稍后再试'; + if (error.response && error.response.data) { + errorMessage = error.response.data.message || errorMessage; + } + ElMessage.error(errorMessage); + console.error('更新用户信息时出错:', error); + } } + diff --git a/frontend/src/api/user.js b/frontend/src/api/user.js index 4f3c92b..0ad748f 100644 --- a/frontend/src/api/user.js +++ b/frontend/src/api/user.js @@ -24,12 +24,6 @@ export const userInfoUpdateService = (userInfoData) => { return request.put('/user/update', userInfoData) } -export const userAvatarUpdateService = (avatarUrl) => { - const urlSearchParams = new URLSearchParams(); - urlSearchParams.append('avatarUrl', avatarUrl) - return request.patch('/user/updateAvatar', urlSearchParams) -} - export const userPwdUpdateService = (pwdData) => { return request.patch('/user/updatePwd', pwdData) } diff --git a/frontend/src/store/express.js b/frontend/src/store/express.js index 68d735f..afdd4dd 100644 --- a/frontend/src/store/express.js +++ b/frontend/src/store/express.js @@ -23,6 +23,16 @@ export const expressStore = defineStore('express', { receiverCity: '深圳', receiverName: '赵六', receiverPhone: '13600000000' + }, + { + express_no: '456789123', + s_datetime: '2023-10-03 12:00', + senderCity: '成都', + senderName: '李四', + senderPhone: '13500000000', + receiverCity: '西安', + receiverName: '赵六', + receiverPhone: '13400000000' } ] }