master
cxy 3 months ago
parent 34523dcde2
commit c88e4bf02a

@ -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}")

@ -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;//更新时间
}

@ -3,7 +3,7 @@
<!-- 左侧菜单 -->
<el-aside width="200px">
<div class="el-aside__logo"></div>
<el-menu active-text-color="#ffd04b" background-color="#ccccd6" text-color="#fff"
<el-menu active-text-color="#ffd04b" background-color="#5cb3cc" text-color="#fff"
router>
<el-menu-item index="/expressForm">
<el-icon>
@ -43,7 +43,10 @@
<el-container>
<!-- 头部区域 -->
<el-header>
<div>欢迎您: <strong>{{ userInfoStore.userInfo.nickname }}</strong></div>
<div>欢迎您:
<strong>{{ userInfoStore.userInfo.nickname }}{{ userInfoStore.userInfo.isCourier === 1 ? ' 快递员' : ' 用户' }}</strong>
<!-- <strong>{{ userInfoStore.userInfo.nickname }}</strong>-->
</div>
<el-dropdown placement="bottom-end" @command="handleCommand">
<span class="el-dropdown__box">
<el-avatar :src="userInfoStore.userInfo.userPic?userInfoStore.userInfo.userPic:avatar"/>
@ -128,7 +131,7 @@ const handleCommand = (command) => {
background-color: #f5f5f5;
.el-aside {
background-color: #ccccd6;
background-color: #5cb3cc;
&__logo {
height: 120px;

@ -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); //
}
}
</script>

@ -21,8 +21,8 @@
<el-text class="phone">联系电话 {{item.receiverPhone}}</el-text>
</el-row>
<el-row class="express-icon-view">
<el-icon @click=" deleteByIndex(index)"><Delete /></el-icon>
<el-icon @click=" modify(item,index)"><Edit /></el-icon>
<el-icon v-if="userInfoStore.userInfo.isCourier === 1" @click=" deleteByIndex(index)"><Delete /></el-icon>
<el-icon v-if="userInfoStore.userInfo.isCourier === 1" @click=" modify(item,index)"><Edit /></el-icon>
</el-row>
</el-row>
</el-row>
@ -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

@ -1,127 +0,0 @@
<template>
<div>
<el-row class="top">
<el-col :span="6" class="col">个人信息</el-col>
<el-col :span="6" class="col-exit">注销账号</el-col>
</el-row>
<el-row class="body">
<el-image class="user-img" src="/user.jpg"></el-image>
<el-text class="phone">13456789000</el-text>
<el-form label-width="auto" style="max-width: 600px">
<el-form-item label="性别">
<el-radio-group v-model="radio1">
<el-radio value="male"></el-radio>
<el-radio value="female"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="生日">
<el-date-picker
v-model="value1"
type="date"
placeholder="Pick a day"
/>
</el-form-item>
<el-form-item label="地区">
<el-input v-model="region"></el-input>
</el-form-item>
<el-form-item label="绑定手机">
<el-input v-model="phone"></el-input>
</el-form-item>
<el-form :model="userInfo" :rules="rules" label-width="100px" size="large">
<el-form-item label="登录名称">
<el-input v-model="userInfo.username" disabled></el-input>
</el-form-item>
<el-form-item label="用户昵称" prop="nickname">
<el-input v-model="userInfo.nickname"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="updateUserInfo"></el-button>
</el-form-item>
</el-form>
</el-form>
</el-row>
</div>
</template>
<script setup>
import { ref } from 'vue'
import { useUserInfoStore } from "@/store/userInfo.js";
import { userInfoUpdateService } from "@/api/user";
import { ElMessage } from "element-plus";
const value1 = ref('')
const radio1 = ref('male') // radio1'male'
const region = ref('')
const phone = ref('')
const userInfoStore = useUserInfoStore();
const userInfo = ref({
...userInfoStore.userInfo
})
const rules = {
nickname: [
{ required: true, message: '请输入用户昵称', trigger: 'blur' },
{
pattern: /^\S{2,10}$/,
message: '昵称必须是2-10位的非空字符串',
trigger: 'blur'
}
],
}
const updateUserInfo = async () => {
try {
await userInfoUpdateService(userInfo.value);
ElMessage.success('修改成功')
userInfoStore.setUserInfo(userInfo.value)
} catch (error) {
ElMessage.error('修改失败')
console.error(error)
}
}
</script>
<style>
.top {
background-color: white;
height: 50px;
justify-content: space-between;
align-items: center;
flex-wrap: nowrap;
border-radius: 10px;
}
.col {
font-size: 20px;
display: flex;
flex-direction: row;
justify-content: flex-start;
padding-left: 20px;
}
.col-exit {
font-size: 12px;
display: flex;
flex-direction: row;
justify-content: flex-end;
padding-right: 20px;
}
.body {
background-color: white;
margin-top: 20px;
border-radius: 10px;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
line-height: 0px;
}
.user-img {
width: 100px;
height: 100px;
}
.phone {
margin-top: 20px;
font-size: 14px;
margin-bottom: 20px;
}
</style>

@ -14,6 +14,12 @@
<el-form-item label="用户昵称" prop="nickname">
<el-input v-model="userInfo.nickname"></el-input>
</el-form-item>
<el-form-item label="电话号码" prop="phone">
<el-input v-model="userInfo.phone"></el-input>
</el-form-item>
<el-form-item label="邮箱" prop="email">
<el-input v-model="userInfo.email"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="updateUserInfo"></el-button>
</el-form-item>
@ -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);
}
}
</script>

@ -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)
}

@ -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'
}
]
}

Loading…
Cancel
Save