From 000a89a294e2cdb493bb3ce178d686e58bd40196 Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期一, 23 十二月 2024 22:27:12 +0800
Subject: [PATCH] 更新234
---
src/types/views.d.ts | 8
src/stores/userInfo.ts | 10
src/layout/navBars/topBar/user.vue | 57 ++++-
src/types/pinia.d.ts | 7
src/router/frontEnd.ts | 1
src/views/personal/component/editUserInfo.vue | 118 +++++++++++++
src/api/Patients/index.ts | 10 +
src/views/login/component/account.vue | 89 ++++++++-
src/api/login/index.ts | 26 ++
src/views/personal/index.vue | 168 ++++++++---------
10 files changed, 372 insertions(+), 122 deletions(-)
diff --git a/src/api/Patients/index.ts b/src/api/Patients/index.ts
index 0e1e32b..7e1af0b 100644
--- a/src/api/Patients/index.ts
+++ b/src/api/Patients/index.ts
@@ -49,6 +49,16 @@
data: params,
});
}
+export function getUserDetail2(params: string) {
+ return request({
+ url: '/user/info/detail2',
+ method: 'post',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ },
+ data: params,
+ });
+}
// 保存患者套餐对象
export function updateNurtion(params: Object) {
return request({
diff --git a/src/api/login/index.ts b/src/api/login/index.ts
index 6840349..c516072 100644
--- a/src/api/login/index.ts
+++ b/src/api/login/index.ts
@@ -33,3 +33,29 @@
method: 'post'
})
}
+// 修改用户信息
+export function editUserInfo(params:object) {
+ return request({
+ url: '/user/info/update',
+ method: 'post',
+ data: params
+ })
+}
+
+export function confirmClient(params: string) {
+ return request({
+ url: '/user/info/confirmClient',
+ method: 'post',
+ headers: {
+ 'Content-Type': 'application/x-www-form-urlencoded'
+ },
+ data: params,
+ });
+}
+export function getclients(params: object) {
+ return request({
+ url: '/client/info/list',
+ method: 'post',
+ params,
+ });
+}
\ No newline at end of file
diff --git a/src/layout/navBars/topBar/user.vue b/src/layout/navBars/topBar/user.vue
index 7dfcbf3..ada91a1 100644
--- a/src/layout/navBars/topBar/user.vue
+++ b/src/layout/navBars/topBar/user.vue
@@ -1,6 +1,22 @@
<template>
<div class="layout-navbars-breadcrumb-user pr15" :style="{ flex: layoutUserFlexNum }">
- <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onComponentSizeChange">
+ <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click">
+ <div class="layout-navbars-breadcrumb-user-icon">
+ <span style="font-weight: 800;">{{userInfos.clientName}}</span> <el-icon><Location /></el-icon>
+
+ </div>
+ <template #dropdown>
+ <el-dropdown-menu>
+ <el-dropdown-item v-for="(client,key) in userInfos.clientInfos" :key="key" @click="clientSet(client)" >
+ <span :style="{color:userInfos.clientName===client.clientName?'#409EFF':''}">
+ {{client.clientName}}
+ </span>
+
+ </el-dropdown-item>
+ </el-dropdown-menu>
+ </template>
+ </el-dropdown>
+ <!-- <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onComponentSizeChange">
<div class="layout-navbars-breadcrumb-user-icon">
<i class="iconfont icon-ziti" :title="$t('message.user.title0')"></i>
</div>
@@ -11,8 +27,8 @@
<el-dropdown-item command="small" :disabled="state.disabledSize === 'small'">{{ $t('message.user.dropdownSmall') }}</el-dropdown-item>
</el-dropdown-menu>
</template>
- </el-dropdown>
- <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onLanguageChange">
+ </el-dropdown> -->
+ <!-- <el-dropdown :show-timeout="70" :hide-timeout="50" trigger="click" @command="onLanguageChange">
<div class="layout-navbars-breadcrumb-user-icon">
<i
class="iconfont"
@@ -27,16 +43,16 @@
<el-dropdown-item command="zh-tw" :disabled="state.disabledI18n === 'zh-tw'">繁體中文</el-dropdown-item>
</el-dropdown-menu>
</template>
- </el-dropdown>
- <div class="layout-navbars-breadcrumb-user-icon" @click="onSearchClick">
+ </el-dropdown> -->
+ <!-- <div class="layout-navbars-breadcrumb-user-icon" @click="onSearchClick">
<el-icon :title="$t('message.user.title2')">
<ele-Search />
</el-icon>
- </div>
- <div class="layout-navbars-breadcrumb-user-icon" @click="onLayoutSetingClick">
+ </div> -->
+ <!-- <div class="layout-navbars-breadcrumb-user-icon" @click="onLayoutSetingClick">
<i class="icon-skin iconfont" :title="$t('message.user.title3')"></i>
- </div>
- <div class="layout-navbars-breadcrumb-user-icon" ref="userNewsBadgeRef" v-click-outside="onUserNewsClick">
+ </div> -->
+ <!-- <div class="layout-navbars-breadcrumb-user-icon" ref="userNewsBadgeRef" v-click-outside="onUserNewsClick">
<el-badge :is-dot="true">
<el-icon :title="$t('message.user.title4')">
<ele-Bell />
@@ -54,14 +70,14 @@
:persistent="false"
>
<UserNews />
- </el-popover>
- <div class="layout-navbars-breadcrumb-user-icon mr10" @click="onScreenfullClick">
+ </el-popover> -->
+ <!-- <div class="layout-navbars-breadcrumb-user-icon mr10" @click="onScreenfullClick">
<i
class="iconfont"
:title="state.isScreenfull ? $t('message.user.title6') : $t('message.user.title5')"
:class="!state.isScreenfull ? 'icon-fullscreen' : 'icon-tuichuquanping'"
></i>
- </div>
+ </div> -->
<el-dropdown :show-timeout="70" :hide-timeout="50" @command="onHandleCommandClick">
<span class="layout-navbars-breadcrumb-user-link">
<img :src="userInfos.photo" class="layout-navbars-breadcrumb-user-link-photo mr5" />
@@ -73,10 +89,10 @@
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item command="/home">{{ $t('message.user.dropdown1') }}</el-dropdown-item>
- <el-dropdown-item command="wareHouse">{{ $t('message.user.dropdown6') }}</el-dropdown-item>
+ <!-- <el-dropdown-item command="wareHouse">{{ $t('message.user.dropdown6') }}</el-dropdown-item> -->
<el-dropdown-item command="/personal">{{ $t('message.user.dropdown2') }}</el-dropdown-item>
- <el-dropdown-item command="/404">{{ $t('message.user.dropdown3') }}</el-dropdown-item>
- <el-dropdown-item command="/401">{{ $t('message.user.dropdown4') }}</el-dropdown-item>
+ <!-- <el-dropdown-item command="/404">{{ $t('message.user.dropdown3') }}</el-dropdown-item> -->
+ <!-- <el-dropdown-item command="/401">{{ $t('message.user.dropdown4') }}</el-dropdown-item> -->
<el-dropdown-item divided command="logOut">{{ $t('message.user.dropdown5') }}</el-dropdown-item>
</el-dropdown-menu>
</template>
@@ -93,6 +109,8 @@
import { useI18n } from 'vue-i18n';
import { storeToRefs } from 'pinia';
import { useUserInfo } from '/@/stores/userInfo';
+import {confirmClient} from '/@/api/login'
+
import { useThemeConfig } from '/@/stores/themeConfig';
import other from '/@/utils/other';
import mittBus from '/@/utils/mitt';
@@ -212,6 +230,14 @@
const initI18nOrSize = (value: string, attr: string) => {
(<any>state)[attr] = Local.get('themeConfig')[value];
};
+const clientSet=(client:any)=>{
+ useUserInfo().setUserCilent({code:client.code,clientName:client.clientName});
+ confirmClient('clientCode='+client.code).then((res)=>{
+ // 更新token
+ Session.set('token', res.data);
+ window.location.reload();
+ })
+}
// 页面加载时
onMounted(() => {
if (Local.get('themeConfig')) {
@@ -219,6 +245,7 @@
initI18nOrSize('globalI18n', 'disabledI18n');
}
});
+
</script>
<style scoped lang="scss">
diff --git a/src/router/frontEnd.ts b/src/router/frontEnd.ts
index 5393f93..57e8a53 100644
--- a/src/router/frontEnd.ts
+++ b/src/router/frontEnd.ts
@@ -23,6 +23,7 @@
if (window.nextLoading === undefined) NextLoading.start();
// 无 token 停止执行下一步
if (!Session.get('token')) return false;
+ //检查用户是管理员账号可以选择客户登录
// 触发初始化用户信息 pinia
// https://gitee.com/lyt-top/vue-next-admin/issues/I5F1HP
await useUserInfo(pinia).setUserInfos();
diff --git a/src/stores/userInfo.ts b/src/stores/userInfo.ts
index 3272e74..869bfde 100644
--- a/src/stores/userInfo.ts
+++ b/src/stores/userInfo.ts
@@ -17,7 +17,8 @@
roles: [],
authBtnList: [],
clientCode:'',
- clientName:''
+ clientName:'',
+ clientInfos:[],
},
}),
actions: {
@@ -85,13 +86,18 @@
authBtnList: defaultAuthBtnList,
clientCode:userRet.currentClientInfo.code,
clientName:userRet.currentClientInfo.clientName,
+ clientInfos:userRet.clientInfos
};
console.log('-----------------2222------------------------------')
- console.log(defaultRoles)
+ console.log(userInfos)
// Session.set('userInfo', userInfos);
resolve(userInfos);
}, 0);
});
},
+ async setUserCilent(client:clientInfo){
+ this.userInfos.clientCode=client.code
+ this.userInfos.clientName=client.clientName
+ }
},
});
diff --git a/src/types/pinia.d.ts b/src/types/pinia.d.ts
index 5a056bc..6f2155a 100644
--- a/src/types/pinia.d.ts
+++ b/src/types/pinia.d.ts
@@ -1,6 +1,10 @@
/**
* pinia 类型定义
*/
+declare interface clientInfo {
+ code:string,
+ clientName:string,
+}
// 用户信息
declare interface UserInfos<T = any> {
@@ -10,7 +14,8 @@
time: number;
userName: string;
clientCode:string,
- clientName:string
+ clientName:string,
+ clientInfos:[]
[key: string]: T;
}
declare interface UserInfosState {
diff --git a/src/types/views.d.ts b/src/types/views.d.ts
index 7dabd25..28229bd 100644
--- a/src/types/views.d.ts
+++ b/src/types/views.d.ts
@@ -17,13 +17,15 @@
newsInfoList: NewInfo[];
recommendList: Recommend[];
personalForm: {
+ id:number,
+ code:string,
name: string;
email: string;
- autograph: string;
- occupation: string;
phone: string;
- sex: string;
+ sex: number;
+ roles:Array;
};
+ isShowDialog:boolean;
};
/**
diff --git a/src/views/login/component/account.vue b/src/views/login/component/account.vue
index 5fc48b0..38ecb11 100644
--- a/src/views/login/component/account.vue
+++ b/src/views/login/component/account.vue
@@ -27,6 +27,11 @@
</template>
</el-input>
</el-form-item>
+ <el-form-item v-if="state.clients.length>1">
+ <el-select v-model="state.ruleForm.clientCode" placeholder="请选择登录客户">
+ <el-option v-for="item in state.clients" :key="item.code" :label="item.clientName" :value="item.code" />
+ </el-select>
+ </el-form-item>
<!-- <el-form-item class="login-animation3">
<el-col :span="15">
<el-input
@@ -65,11 +70,10 @@
import { useThemeConfig } from '/@/stores/themeConfig';
import { initFrontEndControlRoutes } from '/@/router/frontEnd';
import { initBackEndControlRoutes } from '/@/router/backEnd';
-import { Session } from '/@/utils/storage';
+import { Session,Local } from '/@/utils/storage';
import { formatAxis } from '/@/utils/formatTime';
import { NextLoading } from '/@/utils/loading';
-import { signIn } from '/@/api/login';
-import { error } from 'console';
+import { confirmClient, getuserinfo, signIn,getclients } from '/@/api/login';
// 定义变量内容
const { t } = useI18n();
@@ -78,12 +82,15 @@
const route = useRoute();
const router = useRouter();
const state = reactive({
+ LS_token: '',
isShowPassword: false,
ruleForm: {
userName: 'cycems',
password: '123456',
code: '1234',
+ clientCode: '',
},
+ clients: [],
loading: {
signIn: false,
},
@@ -95,24 +102,80 @@
});
// 登录
const onSignIn = async () => {
- try{
- state.loading.signIn = true;
- const signInRes = await signIn(`user_no=${state.ruleForm.userName}&user_password=${state.ruleForm.password}`)
- if(signInRes.data){
- // 存储 token 到浏览器缓存
- Session.set('token', signInRes.data);
+ try {
+ // 第二次请求登录获取到了客户 换绑定token
+ if (state.ruleForm.clientCode) {
+ // 重新绑定token
+ const tokenRe= await confirmClient('clientCode='+state.ruleForm.clientCode);
+ // 更新token
+ Session.set('token', tokenRe.data);
+ // 更新客户选择缓存
+ Local.set('client_'+state.ruleForm.userName,state.ruleForm.clientCode)
+ console.log('更新tokeng重新请求用户信息')
// 模拟数据,对接接口时,记得删除多余代码及对应依赖的引入。用于 `/src/stores/userInfo.ts` 中不同用户登录判断(模拟数据)
Cookies.set('userName', state.ruleForm.userName);
// 前端控制路由,2、请注意执行顺序
const isNoPower = await initFrontEndControlRoutes();
signInSuccess(isNoPower);
+ } else { //第一次登录没有选择到客户
+ state.loading.signIn = true;
+ const signInRes = await signIn(`user_no=${state.ruleForm.userName}&user_password=${state.ruleForm.password}`);
+ if (signInRes.data) {
+ // 存储 token 到浏览器缓存
+ Session.set('token', signInRes.data);
+ const userinfoRes = await getuserinfo();
+ if (userinfoRes?.data?.clientInfos.length > 1) {
+ console.log('多中心管理账号');
+ console.log(userinfoRes.data);
+ state.clients = userinfoRes?.data?.clientInfos;
+ state.loading.signIn = false;
+ console.log(Local.get('client_'+state.ruleForm.userName))
+ // 看看有没有缓存客户选择
+ const lscode=Local.get('client_'+state.ruleForm.userName)
+ if(lscode){
+ const x=state.clients.findIndex((cl:any)=>{return cl.code===lscode})
+ if(x>=0){
+ // 默认选择客户项
+ state.ruleForm.clientCode=lscode
+ }
+
+ }
+ ElMessage.success('请选择登录客户再登录')
+ } else if (
+ userinfoRes?.data?.roles.findIndex((ro: any) => {
+ return ro.roleName === 'admin';
+ }) >= 0
+ ) {
+
+ console.log('管理员登录');
+ var ps= new Object ({
+ page: 0,
+ size: 0,
+ wherecondition: '',
+ ordercondition: 'create_time desc'
+ })
+ getclients(ps).then(re=>{
+ state.clients = re.data.list;
+ }).finally(()=>{
+ state.loading.signIn = false;
+ })
+
+ } else {
+ console.log('普通登录');
+ console.log('-----------用token 换用户信息---------------');
+ // 模拟数据,对接接口时,记得删除多余代码及对应依赖的引入。用于 `/src/stores/userInfo.ts` 中不同用户登录判断(模拟数据)
+ Cookies.set('userName', state.ruleForm.userName);
+ // 前端控制路由,2、请注意执行顺序
+ const isNoPower = await initFrontEndControlRoutes();
+ signInSuccess(isNoPower);
+ }
+ }
}
- }catch(err){
- console.log(err)
- state.loading.signIn = false
+ } catch (err) {
+ console.log(err);
+ state.loading.signIn = false;
}
-
// 存储 token 到浏览器缓存
// Session.set('token', '999');
diff --git a/src/views/personal/component/editUserInfo.vue b/src/views/personal/component/editUserInfo.vue
new file mode 100644
index 0000000..0a01775
--- /dev/null
+++ b/src/views/personal/component/editUserInfo.vue
@@ -0,0 +1,118 @@
+<template>
+ <el-dialog title="密码修改" v-model="isShowDialog" width="400px">
+ <div class="personal-info">
+
+ <el-form :model="form" label-width="120px" :rules="rules" ref="formRef" size="small">
+ <el-form-item label="新密码:" prop="newUserPassword">
+ <el-input type="password" show-password v-model="form.newUserPassword" placeholder="输入输入新密码"></el-input>
+ </el-form-item>
+ <el-form-item label="确认密码:" prop="userPassword">
+ <el-input type="password" show-password v-model="form.userPassword" placeholder="输入输入确认密码"></el-input>
+ </el-form-item>
+ </el-form>
+ </div>
+ <template #footer>
+ <div style="text-align:center">
+ <el-button type="danger" @click="isShowDialog = false" size="small">取消</el-button>
+ <el-button type="primary" size="small" @click="save">保存</el-button>
+ </div>
+ </template>
+ </el-dialog>
+ </template>
+ <script lang="ts">
+ import { reactive, toRefs, getCurrentInstance } from 'vue'
+ import { editUserInfo } from '/@/api/login'
+ import { ElMessage, ElMessageBox } from 'element-plus';
+ import { Session, Local } from '/@/utils/storage';
+ import { useRouter } from 'vue-router';
+ export default {
+ name: 'personalInfo',
+ setup() {
+ const {proxy} = getCurrentInstance() as any
+ const router = useRouter();
+ const state = reactive({
+ // 是否显示dialog
+ isShowDialog: false,
+ // 表单
+ form: {
+ id: 0,
+ // 用户名
+ userNo: '',
+ // 用户姓名
+ userName: '',
+ // 用户手机号
+ userMobile: '',
+ newUserPassword:'',
+ // 用户密码
+ userPassword: '',
+ // 邮箱
+ userEmail: ''
+ },
+ // 表单校验
+ rules: {
+ newUserPassword: { min: 6, max:16,required: true, message: '请输入6-16位密码', trigger: 'blur'},
+ userPassword: [{ min: 6, max:16,required: true, message: '请输入6-16位密码', trigger: 'blur' },
+ {
+ validator: (rule, value, callback) => {
+ if (value !== state.form.newUserPassword) callback(new Error('两次密码不一致'))
+ else callback()
+ },
+
+ }],
+ }
+ })
+ // 保存
+ const save = () => {
+ proxy.$refs['formRef'].validate((valid:boolean) => {
+ if (valid) {
+ const pasm={
+ id:state.form.id,
+ userPassword:state.form.userPassword
+ }
+ editUserInfo(pasm).then(() => {
+ state.isShowDialog = false
+ ElMessageBox.confirm(
+ '密码修改成功,您需要重新登录吗??',
+ '提示',
+ {
+ confirmButtonText: '确认',
+ cancelButtonText: '取消',
+ type: 'warning',
+ }
+ )
+ .then(() => {
+ Session.clear(); // 清除缓存/token等
+ router.push('/login');
+ })
+ .catch(() => {
+
+ })
+
+ })
+ }
+ })
+ }
+ // 打开dialog
+ const openDialog = (content) => {
+ console.log('打开--')
+ console.log(content)
+ state.form.id = content.id
+ state.form.newUserPassword = ''
+ state.form.userPassword = ''
+ state.isShowDialog = true
+ }
+ return {
+ // 保存
+ save,
+ ...toRefs(state),
+ // 打开dialog
+ openDialog
+ }
+ }
+ }
+ </script>
+ <style lang="scss" scoped>
+ .personal-info {
+
+ }
+ </style>
\ No newline at end of file
diff --git a/src/views/personal/index.vue b/src/views/personal/index.vue
index 4ca238e..69980dc 100644
--- a/src/views/personal/index.vue
+++ b/src/views/personal/index.vue
@@ -16,25 +16,22 @@
<el-col :span="24">
<el-row>
<el-col :xs="24" :sm="8" class="personal-item mb6">
- <div class="personal-item-label">昵称:</div>
- <div class="personal-item-value">小柒</div>
+ <div class="personal-item-label">姓名:</div>
+ <div class="personal-item-value">{{state.personalForm.name}}</div>
</el-col>
<el-col :xs="24" :sm="16" class="personal-item mb6">
<div class="personal-item-label">身份:</div>
- <div class="personal-item-value">超级管理</div>
+ <div class="personal-item-value">
+ <el-tag style="margin-right:20px" type="warning" v-for="item in state.personalForm.roles" :key="item">{{item.roleText}}</el-tag>
+ </div>
</el-col>
</el-row>
</el-col>
<el-col :span="24">
<el-row>
- <el-col :xs="24" :sm="8" class="personal-item mb6">
- <div class="personal-item-label">登录IP:</div>
- <div class="personal-item-value">192.168.1.1</div>
- </el-col>
- <el-col :xs="24" :sm="16" class="personal-item mb6">
- <div class="personal-item-label">登录时间:</div>
- <div class="personal-item-value">2021-02-05 18:47:26</div>
- </el-col>
+ <div v-for="item in userInfos.clientInfos" :key="item.code">
+ <el-tag style="margin-right:20px" type="primary" >{{item.clientName}}</el-tag>
+ </div>
</el-row>
</el-col>
</el-row>
@@ -60,22 +57,7 @@
</el-card>
</el-col>
- <!-- 营销推荐 -->
- <el-col :span="24">
- <el-card shadow="hover" class="mt15" header="营销推荐">
- <el-row :gutter="15" class="personal-recommend-row">
- <el-col :sm="6" v-for="(v, k) in state.recommendList" :key="k" class="personal-recommend-col">
- <div class="personal-recommend" :style="{ 'background-color': v.bg }">
- <SvgIcon :name="v.icon" :size="70" :style="{ color: v.iconColor }" />
- <div class="personal-recommend-auto">
- <div>{{ v.title }}</div>
- <div class="personal-recommend-msg">{{ v.msg }}</div>
- </div>
- </div>
- </el-col>
- </el-row>
- </el-card>
- </el-col>
+
<!-- 更新信息 -->
<el-col :span="24">
@@ -84,27 +66,13 @@
<el-form :model="state.personalForm" size="default" label-width="40px" class="mt35 mb35">
<el-row :gutter="35">
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
- <el-form-item label="昵称">
+ <el-form-item label="姓名">
<el-input v-model="state.personalForm.name" placeholder="请输入昵称" clearable></el-input>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
<el-form-item label="邮箱">
<el-input v-model="state.personalForm.email" placeholder="请输入邮箱" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
- <el-form-item label="签名">
- <el-input v-model="state.personalForm.autograph" placeholder="请输入签名" clearable></el-input>
- </el-form-item>
- </el-col>
- <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
- <el-form-item label="职业">
- <el-select v-model="state.personalForm.occupation" placeholder="请选择职业" clearable class="w100">
- <el-option label="计算机 / 互联网 / 通信" value="1"></el-option>
- <el-option label="生产 / 工艺 / 制造" value="2"></el-option>
- <el-option label="医疗 / 护理 / 制药" value="3"></el-option>
- </el-select>
</el-form-item>
</el-col>
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
@@ -115,14 +83,14 @@
<el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
<el-form-item label="性别">
<el-select v-model="state.personalForm.sex" placeholder="请选择性别" clearable class="w100">
- <el-option label="男" value="1"></el-option>
- <el-option label="女" value="2"></el-option>
+ <el-option label="男" :value="0"></el-option>
+ <el-option label="女" :value="1"></el-option>
</el-select>
</el-form-item>
</el-col>
- <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
+ <el-col :xs="24" :sm="12" :md="8" :lg="6" :xl="4" class="mb20">
<el-form-item>
- <el-button type="primary">
+ <el-button type="primary" @click="updatePat">
<el-icon>
<ele-Position />
</el-icon>
@@ -137,75 +105,98 @@
<div class="personal-edit-safe-item">
<div class="personal-edit-safe-item-left">
<div class="personal-edit-safe-item-left-label">账户密码</div>
- <div class="personal-edit-safe-item-left-value">当前密码强度:强</div>
+ <div class="personal-edit-safe-item-left-value">当前密码强度:一般</div>
</div>
<div class="personal-edit-safe-item-right">
- <el-button text type="primary">立即修改</el-button>
+ <el-button text type="primary" @click="updataPSWD">立即修改</el-button>
</div>
</div>
</div>
- <div class="personal-edit-safe-box">
- <div class="personal-edit-safe-item">
- <div class="personal-edit-safe-item-left">
- <div class="personal-edit-safe-item-left-label">密保手机</div>
- <div class="personal-edit-safe-item-left-value">已绑定手机:132****4108</div>
- </div>
- <div class="personal-edit-safe-item-right">
- <el-button text type="primary">立即修改</el-button>
- </div>
- </div>
- </div>
- <div class="personal-edit-safe-box">
- <div class="personal-edit-safe-item">
- <div class="personal-edit-safe-item-left">
- <div class="personal-edit-safe-item-left-label">密保问题</div>
- <div class="personal-edit-safe-item-left-value">已设置密保问题,账号安全大幅度提升</div>
- </div>
- <div class="personal-edit-safe-item-right">
- <el-button text type="primary">立即设置</el-button>
- </div>
- </div>
- </div>
- <div class="personal-edit-safe-box">
- <div class="personal-edit-safe-item">
- <div class="personal-edit-safe-item-left">
- <div class="personal-edit-safe-item-left-label">绑定QQ</div>
- <div class="personal-edit-safe-item-left-value">已绑定QQ:110****566</div>
- </div>
- <div class="personal-edit-safe-item-right">
- <el-button text type="primary">立即设置</el-button>
- </div>
- </div>
- </div>
+
</el-card>
</el-col>
</el-row>
+ <editTemplate ref="editTemplateRef"></editTemplate>
</div>
</template>
<script setup lang="ts" name="personal">
-import { reactive, computed } from 'vue';
+import editTemplate from '/@/views/personal/component/editUserInfo.vue'
+import { reactive, computed, onMounted, ref } from 'vue';
import { formatAxis } from '/@/utils/formatTime';
-import { newsInfoList, recommendList } from './mock';
-
+import { storeToRefs } from 'pinia';
+import { useUserInfo } from '/@/stores/userInfo';
+import { recommendList } from './mock';
+import {getUserDetail2} from '/@/api/Patients'
+import {editUserInfo} from '/@/api/login'
+import { ElLoading } from 'element-plus';
+const stores = useUserInfo();
+const { userInfos } = storeToRefs(stores);
// 定义变量内容
const state = reactive<PersonalState>({
- newsInfoList,
+ newsInfoList:[],
recommendList,
personalForm: {
+ id:0,
+ code:'',
name: '',
email: '',
- autograph: '',
- occupation: '',
phone: '',
- sex: '',
+ sex: 0,
+ roles:[]
},
+ isShowDialog:false,
});
+const editTemplateRef=ref()
// 当前时间提示语
const currentTime = computed(() => {
return formatAxis(new Date());
});
+const updatePat=()=>{
+ const data={
+ id: state.personalForm.id,
+ code:state.personalForm.code,
+ userGender: state.personalForm.sex,
+ userName: state.personalForm.name,
+ userMobile: state.personalForm.phone,
+ userEmail:state.personalForm.email
+ }
+ console.log(data)
+ const loading = ElLoading.service({
+ lock: true,
+ text: 'Loading',
+ background: 'rgba(0, 0, 0, 0.7)',
+ })
+ editUserInfo(data).then(res=>{
+ console.log(res.data)
+ }).finally(()=>{
+ loading.close()
+ getDetail()
+ })
+}
+// 获取当前用户信息
+const getDetail = () => {
+ getUserDetail2(`code=${userInfos.value.code}`).then((res) => {
+ state.personalForm.id=res.data.id
+ state.personalForm.code=res.data.code
+ state.personalForm.name = res.data.userName
+ state.personalForm.phone = res.data.userMobile
+ state.personalForm.email = res.data.userEmail
+ state.personalForm.sex = res.data.userGender
+ state.personalForm.roles=res.data.roles
+
+ console.log(state.personalForm,'0000000')
+ })
+
+ }
+const updataPSWD=()=>{
+ editTemplateRef.value.openDialog(state.personalForm)
+}
+onMounted(()=>{
+ console.log(userInfos,'00000')
+ getDetail()
+})
</script>
<style scoped lang="scss">
@@ -252,6 +243,7 @@
}
.personal-item-value {
@include text-ellipsis(1);
+
}
}
}
--
Gitblit v1.8.0