Commit 990b4b29 by 孙美琪

相关提交

parent 67cb9a8c
...@@ -11,9 +11,9 @@ export function enterpriseAudit (query) { ...@@ -11,9 +11,9 @@ export function enterpriseAudit (query) {
} }
// 根据用户查询企业认证信息和用户信息 // 根据用户查询企业认证信息和用户信息
export function auditInfo (query) { export function auditInfo(query) {
return request({ return request({
url: '/api/v1/enterpriseAudit', url: '/member/user/getUserAndEnterpriseInfo',
method: 'get', method: 'get',
data: query data: query
}) })
......
...@@ -91,7 +91,7 @@ export function getUserProfile() { ...@@ -91,7 +91,7 @@ export function getUserProfile() {
// 修改用户个人信息 // 修改用户个人信息
export function updateUserProfile(data) { export function updateUserProfile(data) {
return request({ return request({
url: '/system/user/profile', url: '/member/user/update',
method: 'put', method: 'put',
data: data data: data
}) })
......
...@@ -57,7 +57,7 @@ const useUserStore = defineStore( ...@@ -57,7 +57,7 @@ const useUserStore = defineStore(
this.roles = ['ROLE_DEFAULT'] this.roles = ['ROLE_DEFAULT']
}*/ }*/
this.id = user.id this.id = user.id
this.name = user.mobile this.name = user.nickname
this.avatar = avatar this.avatar = avatar
resolve(res) resolve(res)
}).catch(error => { }).catch(error => {
......
...@@ -58,7 +58,6 @@ ...@@ -58,7 +58,6 @@
<div v-if="showVersion === 1" class="version-1"> <div v-if="showVersion === 1" class="version-1">
<el-table :data="tableData" :max-height="490" style="width: 100%"> <el-table :data="tableData" :max-height="490" style="width: 100%">
<el-table-column prop="name" label="型号" width="190px" sortable/> <el-table-column prop="name" label="型号" width="190px" sortable/>
<!-- <el-table-column v-for="item in productType" prop="cpu" label="CPU" sortable/>-->
<el-table-column <el-table-column
v-for="(item, index) in tableData[0]?.properties.length!==0?tableData[0]?.properties.slice(0,6):tableData[0]?.properties" v-for="(item, index) in tableData[0]?.properties.length!==0?tableData[0]?.properties.slice(0,6):tableData[0]?.properties"
:key="index" :key="index"
......
...@@ -28,9 +28,7 @@ ...@@ -28,9 +28,7 @@
<el-form label-width="110px" label-position="left"> <el-form label-width="110px" label-position="left">
<el-form-item label="账号昵称:"> <el-form-item label="账号昵称:">
<div>{{ infoData.nickName }}</div> <div>{{ infoData.nickName }}</div>
<el-icon @click="$router.push('/user/profile')"> <el-button type="primary" link @click="$router.push('/user/profile?tab=0')" class="ml20">修改</el-button>
<Edit/>
</el-icon>
</el-form-item> </el-form-item>
<el-form-item label="注册时间:"> <el-form-item label="注册时间:">
<div>{{ infoData.createUserTime }}</div> <div>{{ infoData.createUserTime }}</div>
...@@ -53,15 +51,11 @@ ...@@ -53,15 +51,11 @@
<el-form label-width="96px" label-position="left"> <el-form label-width="96px" label-position="left">
<el-form-item label="我的手机号:"> <el-form-item label="我的手机号:">
<div>{{ infoData.mobile }}</div> <div>{{ infoData.mobile }}</div>
<el-icon @click="$router.push('/user/profile')"> <el-button type="primary" link @click="$router.push('/user/profile?tab=1')" class="ml20">换绑</el-button>
<Edit/>
</el-icon>
</el-form-item> </el-form-item>
<el-form-item label="我的密码:"> <el-form-item label="我的密码:">
<div>********</div> <div>********</div>
<el-icon @click="$router.push('/user/profile')"> <el-button type="primary" link @click="$router.push('/user/profile?tab=2')" class="ml20">修改密码</el-button>
<Edit/>
</el-icon>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
...@@ -81,7 +75,7 @@ ...@@ -81,7 +75,7 @@
<el-tag v-else class="mr5" type="warning">未认证</el-tag> <el-tag v-else class="mr5" type="warning">未认证</el-tag>
<el-button v-if="!infoData.status || infoData.status === '驳回'" <el-button v-if="!infoData.status || infoData.status === '驳回'"
@click="$router.push('/console/authentication')" type="primary" link>去申请 @click="$router.push('/console/authentication')" type="primary" link class="ml20">去申请
</el-button> </el-button>
</el-form-item> </el-form-item>
<el-form-item label="最后提交时间:"> <el-form-item label="最后提交时间:">
...@@ -119,7 +113,7 @@ ...@@ -119,7 +113,7 @@
</el-card> </el-card>
</el-col> </el-col>
</el-row> </el-row>
<el-dialog></el-dialog>
</div> </div>
</template> </template>
...@@ -131,10 +125,11 @@ import {ElMessageBox} from 'element-plus' ...@@ -131,10 +125,11 @@ import {ElMessageBox} from 'element-plus'
const baseUrl = import.meta.env.VITE_APP_BASE_API const baseUrl = import.meta.env.VITE_APP_BASE_API
const infoData = ref({}) const infoData = ref({})
const handleOpenDialog = ref(false)
function getAuditInfo() { function getAuditInfo() {
auditInfo().then(res => { auditInfo().then(res => {
console.log(res) console.log(res, 'auditInfo')
infoData.value = res.data infoData.value = res.data
}) })
} }
......
...@@ -89,8 +89,7 @@ ...@@ -89,8 +89,7 @@
<el-col :span="8" v-for="(i,index) in infoList" :key="index" @click="handleInfoDetails(i.id)"> <el-col :span="8" v-for="(i,index) in infoList" :key="index" @click="handleInfoDetails(i.id)">
<div class="info-top-item"> <div class="info-top-item">
<img <img
:src="i.images[0]" :src="i.image" alt="">
alt="">
<div class="content"> <div class="content">
<div class="title">{{ i.title }} <div class="title">{{ i.title }}
</div> </div>
...@@ -240,23 +239,7 @@ onBeforeUnmount(() => { ...@@ -240,23 +239,7 @@ onBeforeUnmount(() => {
function getBanner() { function getBanner() {
banner().then(res => { banner().then(res => {
// 筛选条件:showStatus为1的数据 bannerImgList.value = res.data.filter(item => item.image);
const validData = res.data.filter(item => item.showStatus === 0);
// 处理图片字段,只取第一张图片
validData.forEach(item => {
// 注意后台字段名为images(复数),需要取第一张图片
if (Array.isArray(item.images) && item.images.length > 0) {
item.image = item.images[0];
} else {
item.image = ''; // 如果没有图片,设置为空字符串
}
});
// 对筛选后的数据进行排序
bannerImgList.value = validData.sort(function (a, b) {
return a.orderNum - b.orderNum
})
}) })
} }
......
<template>
<el-form ref="pwdRef" :model="user" :rules="rules" label-width="100px" style="width: 400px;height: 260px;">
<el-form-item label="原手机号码" prop="oldPassword">
<el-input v-model="user.oldPassword" placeholder="请输入原手机号码" type="password" show-password/>
</el-form-item>
<el-form-item label="验证码" prop="newPassword">
<el-input
v-model="user.code"
type="text"
size="large"
auto-complete="off"
placeholder="验证码">
<template #append>
<el-button @click="startCountdown" :disabled="isCounting">
{{ isCounting ? `重新发送(${countdown})` : '发送验证码' }}
</el-button>
</template>
</el-input>
</el-form-item>
<el-form-item label="新手机号码" prop="confirmPassword">
<el-input v-model="user.confirmPassword" placeholder="请确认新密码" type="password" show-password/>
</el-form-item>
<el-form-item label="验证码" prop="code">
<el-input
v-model="user.code"
type="text"
size="large"
auto-complete="off"
placeholder="验证码">
<template #append>
<el-button @click="startCountdown" :disabled="isCounting">
{{ isCounting ? `重新发送(${countdown})` : '发送验证码' }}
</el-button>
</template>
</el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submit">保存</el-button>
<!-- <el-button type="danger" @click="close">关闭</el-button>-->
</el-form-item>
</el-form>
</template>
<script setup>
import {updateUserPwd} from "@/api/system/user";
import {sendCode} from "@/api/login.js";
import {ElMessage} from "element-plus";
const {proxy} = getCurrentInstance();
const user = reactive({
oldPassword: undefined,
newPassword: undefined,
confirmPassword: undefined
});
const countdown = ref(60); // 倒计时时间,初始为60秒
const isCounting = ref(false); // 是否正在倒计时的标志
const pwdRef = ref(null); // 是否正在倒计时的标志
const equalToPassword = (rule, value, callback) => {
if (user.newPassword !== value) {
callback(new Error("两次输入的密码不一致"));
} else {
callback();
}
};
const rules = ref({
oldPassword: [{required: true, message: "旧密码不能为空", trigger: "blur"}],
newPassword: [{required: true, message: "新密码不能为空", trigger: "blur"}, {
min: 6,
max: 20,
message: "长度在 6 到 20 个字符",
trigger: "blur"
}, {pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur"}],
confirmPassword: [{required: true, message: "确认密码不能为空", trigger: "blur"}, {
required: true,
validator: equalToPassword,
trigger: "blur"
}]
});
function getCode() {
sendCode({mobile: user.phoneNumber, scene: 2}).then(res => {
if (res.data === true) {
ElMessage({message: '短信已发送请注意查收', type: 'success'})
}
})
}
// 开始倒计时的方法
const startCountdown = () => {
getCode()
pwdRef.value.validateField('phoneNumber', valid => {
if (valid) {
if (isCounting.value) return; // 如果已经在倒计时,则不重复开始
isCounting.value = true; // 设置正在倒计时的标志为true
const timer = setInterval(() => {
if (countdown.value > 0) {
countdown.value--; // 倒计时减1
} else {
clearInterval(timer); // 倒计时结束,清除定时器
isCounting.value = false; // 设置正在倒计时的标志为false
countdown.value = 60; // 重置倒计时时间
}
}, 1000); // 每1000毫秒(1秒)执行一次
}
})
};
/** 提交按钮 */
function submit() {
proxy.$refs.pwdRef.validate(valid => {
if (valid) {
updateUserPwd(user.oldPassword, user.newPassword).then(response => {
proxy.$modal.msgSuccess("修改成功");
});
}
});
};
/** 关闭按钮 */
function close() {
proxy.$tab.closePage();
};
console.log(user, 'user')
</script>
...@@ -9,34 +9,20 @@ ...@@ -9,34 +9,20 @@
</div> </div>
</template> </template>
<div> <div>
<div class="text-center"> <div class="text-center mb20">
<userAvatar /> <userAvatar/>
</div> </div>
<ul class="list-group list-group-striped"> <ul class="list-group list-group-striped">
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="user" />用户名称 <svg-icon icon-class="user"/>
用户名称
<div class="pull-right">{{ state.user.userName }}</div> <div class="pull-right">{{ state.user.userName }}</div>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<svg-icon icon-class="phone" />手机号码 <svg-icon icon-class="phone"/>
手机号码
<div class="pull-right">{{ state.user.phonenumber }}</div> <div class="pull-right">{{ state.user.phonenumber }}</div>
</li> </li>
<li class="list-group-item">
<svg-icon icon-class="email" />用户邮箱
<div class="pull-right">{{ state.user.email }}</div>
</li>
<!-- <li class="list-group-item">-->
<!-- <svg-icon icon-class="tree" />所属部门-->
<!-- <div class="pull-right" v-if="state.user.dept">{{ state.user.dept.deptName }} / {{ state.postGroup }}</div>-->
<!-- </li>-->
<!-- <li class="list-group-item">-->
<!-- <svg-icon icon-class="peoples" />所属角色-->
<!-- <div class="pull-right">{{ state.roleGroup }}</div>-->
<!-- </li>-->
<!-- <li class="list-group-item">-->
<!-- <svg-icon icon-class="date" />创建日期-->
<!-- <div class="pull-right">{{ state.user.createTime }}</div>-->
<!-- </li>-->
</ul> </ul>
</div> </div>
</el-card> </el-card>
...@@ -49,11 +35,14 @@ ...@@ -49,11 +35,14 @@
</div> </div>
</template> </template>
<el-tabs v-model="activeTab"> <el-tabs v-model="activeTab">
<el-tab-pane label="基本资料" name="userinfo"> <el-tab-pane label="修改昵称" name="0">
<userInfo :user="state.user" /> <userInfo :user="state.user"/>
</el-tab-pane>
<el-tab-pane label="换绑" name="1">
<changeBind :user="state.user"/>
</el-tab-pane> </el-tab-pane>
<el-tab-pane label="修改密码" name="resetPwd"> <el-tab-pane label="修改密码" name="2">
<resetPwd /> <resetPwd :user="state.user"/>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</el-card> </el-card>
...@@ -66,9 +55,14 @@ ...@@ -66,9 +55,14 @@
import userAvatar from "./userAvatar"; import userAvatar from "./userAvatar";
import userInfo from "./userInfo"; import userInfo from "./userInfo";
import resetPwd from "./resetPwd"; import resetPwd from "./resetPwd";
import { getUserProfile } from "@/api/system/user"; import changeBind from "./changeBind";
import {getUserProfile} from "@/api/system/user";
import {useRoute} from 'vue-router'
import {onMounted} from "vue";
const activeTab = ref("userinfo"); const route = useRoute()
const activeTab = ref('0');
const state = reactive({ const state = reactive({
user: {}, user: {},
roleGroup: {}, roleGroup: {},
...@@ -83,5 +77,15 @@ function getUser() { ...@@ -83,5 +77,15 @@ function getUser() {
}); });
}; };
getUser(); // getUser();
onMounted(() => {
const tabNum = route.query.tab
activeTab.value = tabNum
})
</script> </script>
<style scoped lang="scss">
.box-card {
height: 395px;
}
</style>
<template> <template>
<el-form ref="pwdRef" :model="user" :rules="rules" label-width="80px"> <el-form ref="pwdRef" :model="user" :rules="rules" label-width="80px" style="width: 400px;height: 260px;">
<el-form-item label="旧密码" prop="oldPassword"> <el-form-item label="旧密码" prop="oldPassword">
<el-input v-model="user.oldPassword" placeholder="请输入旧密码" type="password" show-password /> <el-input v-model="user.oldPassword" placeholder="请输入旧密码" type="password" show-password />
</el-form-item> </el-form-item>
......
...@@ -167,5 +167,7 @@ function closeDialog() { ...@@ -167,5 +167,7 @@ function closeDialog() {
cursor: pointer; cursor: pointer;
line-height: 110px; line-height: 110px;
border-radius: 50%; border-radius: 50%;
width: 120px;
height: 120px;
} }
</style> </style>
<template> <template>
<el-form ref="userRef" :model="form" :rules="rules" label-width="80px"> <el-form ref="pwdRef" :model="user" :rules="rules" label-width="80px" style="width: 400px;height: 260px;">
<el-form-item label="用户昵称" prop="nickName"> <el-form-item label="账号昵称" prop="nickname">
<el-input v-model="form.nickName" maxlength="30" /> <el-input v-model="user.nickname" placeholder="请输入账号昵称" type="text"/>
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input v-model="form.phonenumber" maxlength="11" />
</el-form-item>
<el-form-item label="邮箱" prop="email">
<el-input v-model="form.email" maxlength="50" />
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="form.sex">
<el-radio label="0"></el-radio>
<el-radio label="1"></el-radio>
</el-radio-group>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="submit">保存</el-button> <el-button type="primary" @click="submit">保存</el-button>
<!-- <el-button type="danger" @click="close">关闭</el-button>--> <!-- <el-button type="danger" @click="close">关闭</el-button>-->
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
<script setup> <script setup>
import { updateUserProfile } from "@/api/system/user"; import {updateUserProfile} from "@/api/system/user";
const props = defineProps({ const {proxy} = getCurrentInstance();
user: {
type: Object
}
});
const { proxy } = getCurrentInstance(); const user = reactive({
nickname: undefined,
});
const form = ref({});
const rules = ref({ const rules = ref({
nickName: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }], nickname: [{required: true, message: "账号昵称不能为空", trigger: "blur"}],
email: [{ required: true, message: "邮箱地址不能为空", trigger: "blur" }, { type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
}); });
/** 提交按钮 */ /** 提交按钮 */
function submit() { function submit() {
proxy.$refs.userRef.validate(valid => { proxy.$refs.pwdRef.validate(valid => {
if (valid) { if (valid) {
updateUserProfile(form.value).then(response => { updateUserProfile({nickname: user.nickname}).then(response => {
proxy.$modal.msgSuccess("修改成功"); proxy.$modal.msgSuccess("修改成功");
props.user.phonenumber = form.value.phonenumber;
props.user.email = form.value.email;
}); });
} }
}); });
...@@ -57,11 +38,4 @@ function submit() { ...@@ -57,11 +38,4 @@ function submit() {
function close() { function close() {
proxy.$tab.closePage(); proxy.$tab.closePage();
}; };
// 回显当前登录用户信息
watch(() => props.user, user => {
if (user) {
form.value = { nickName: user.nickName, phonenumber: user.phonenumber, email: user.email, sex: user.sex };
}
},{ immediate: true });
</script> </script>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment