Copyright ©2025 青岛海信智能医疗技术有限公司。
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index 2b17e0b..49a06d2 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -52,7 +52,7 @@
- {{ nickName }}
+ {{ $store.getters.loginInfo.name }}
- {{ status }}
+ {{ $store.getters.loginInfo.status }}
所属单位
- {{ dept }}
+ {{ $store.getters.loginInfo.group }}
@@ -167,14 +167,7 @@ export default {
},
},
computed: {
- ...mapGetters([
- "sidebar",
- "avatar",
- "device",
- "nickName",
- "dept",
- "status",
- ]),
+ ...mapGetters(["sidebar", "avatar", "device"]),
setting: {
get() {
return this.$store.state.settings.showSettings;
diff --git a/src/layout/components/SystemSettingDialog.vue b/src/layout/components/SystemSettingDialog.vue
index 8c0d85f..79d7c49 100644
--- a/src/layout/components/SystemSettingDialog.vue
+++ b/src/layout/components/SystemSettingDialog.vue
@@ -93,7 +93,7 @@
- 清除客户端缓存
+ 清除客户端缓存
@@ -129,6 +129,30 @@ export default {
this.activeTab = "basic";
}
},
+ // 监听音频设置变化
+ audioForm: {
+ deep: true,
+ handler(newVal, oldVal) {
+ // 检测是否有实际变化
+ if (oldVal && (
+ newVal.autoGain !== oldVal.autoGain ||
+ newVal.echoCancel !== oldVal.echoCancel ||
+ newVal.noiseReduction !== oldVal.noiseReduction
+ )) {
+ this.$message({
+ message: '音频设置已修改!\n请重新启动正在进行中的视讯功能,使设置生效。',
+ type: 'warning',
+ duration: 5000,
+ });
+ }
+ },
+ },
+ // 监听会诊评价设置变化
+ 'otherForm.skipEvaluation': function(newVal, oldVal) {
+ if (oldVal !== undefined && newVal !== oldVal) {
+ this.$message.success('设置成功');
+ }
+ },
},
data() {
return {
@@ -160,12 +184,26 @@ export default {
handleSignatureSubmit(signatureData) {
this.otherForm.signature = signatureData;
},
- restoreDefault() {
- this.$confirm("确定要恢复默认设置吗?", "提示", {
+ // 清除客户端缓存
+ clearCache() {
+ this.$confirm("确定要清除客户端缓存吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
+ // 清除 localStorage 中的缓存数据
+ // localStorage.clear();
+ this.$message.success('缓存清除成功');
+ }).catch(() => {
+ // 用户取消操作
+ });
+ },
+ restoreDefault() {
+ this.$confirm("确定要恢复默认设置吗?", "提示", {
+ confirmButtonText: "确定",
+ cancelButtonText: "取消",
+ type: "warning",
+ }).then(() => {
this.basicForm = {
notification: true,
// autoStart: false,
@@ -182,7 +220,7 @@ export default {
this.otherForm = {
skipEvaluation: false,
};
- this.$message.success("已恢复默认设置");
+ this.$message.success("重置成功");
});
},
},
diff --git a/src/store/getters.js b/src/store/getters.js
index 255e5de..5cd8572 100644
--- a/src/store/getters.js
+++ b/src/store/getters.js
@@ -7,21 +7,16 @@ const getters = {
lockPath: state => state.lock.lockPath,
visitedViews: state => state.tagsView.visitedViews,
cachedViews: state => state.tagsView.cachedViews,
+ loginInfo: state => state.user.loginInfo,
token: state => state.user.token,
- avatar: state => state.user.avatar,
- id: state => state.user.id,
- name: state => state.user.name,
- nickName: state => state.user.nickName,
+ userInfo: state => state.user.userInfo,
introduction: state => state.user.introduction,
roles: state => state.user.roles,
- status: state => state.user.status,
- dept: state => state.user.dept,
permissions: state => state.user.permissions,
permission_routes: state => state.permission.routes,
topbarRouters: state => state.permission.topbarRouters,
defaultRoutes: state => state.permission.defaultRoutes,
sidebarRouters: state => state.permission.sidebarRouters,
- userInfo: state => state.user.userInfo,
sidebarCollapsed: state => state.sidebarCollapsed,
latestContacts: state => state.message.latestContacts,
currentChat: state => state.message.currentChat,
@@ -34,5 +29,4 @@ const getters = {
mqttMessages: state => state.mqtt.messages,
config: state => state.user.netConfig
}
-
export default getters
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 606555a..46b3cec 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -3,22 +3,18 @@ import router from '@/router'
import cache from '@/plugins/cache'
import { MessageBox } from 'element-ui'
import { login, logout, getInfo, getCommonConfigOptions } from '@/api/login'
-import { getToken, setToken, removeToken } from '@/utils/auth'
+import { getToken, getLoginInfo, setToken, setLoginInfo, removeToken, removeLoginInfo } from '@/utils/auth'
import { isHttp, isEmpty } from "@/utils/validate"
import defAva from '@/assets/images/profile.jpg'
import { initMinioClient, parseMinioFilePath } from '@/utils/requestMinio'
const user = {
state: {
+ loginInfo: getLoginInfo(),
+ userInfo: {},
token: getToken(),
- id: '',
- name: '',
- nickName: '',
- avatar: '',
roles: [],
permissions: [],
- dept: '',
- status: '',
netConfig: {}
},
@@ -26,29 +22,17 @@ const user = {
SET_TOKEN: (state, token) => {
state.token = token
},
- SET_ID: (state, id) => {
- state.id = id
- },
- SET_NAME: (state, name) => {
- state.name = name
- },
- SET_NICK_NAME: (state, nickName) => {
- state.nickName = nickName
- },
- SET_AVATAR: (state, avatar) => {
- state.avatar = avatar
- },
SET_ROLES: (state, roles) => {
state.roles = roles
},
SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions
},
- SET_DEPT: (state, dept) => {
- state.dept = dept
+ SET_LOGIN_INFO: (state, loginInfo) => {
+ state.loginInfo = loginInfo
},
- SET_STATUS: (state, status) => {
- state.status = status
+ SET_USER_INFO: (state, userInfo) => {
+ state.userInfo = userInfo
},
SET_NET_CONFIG: (state, netConfig) => {
state.netConfig = netConfig
@@ -60,7 +44,10 @@ const user = {
return new Promise((resolve, reject) => {
login(userInfo).then(res => {
setToken(res.data.token)
+ setLoginInfo(res.data)
commit('SET_TOKEN', res.data.token)
+ commit('SET_LOGIN_INFO', res.data)
+ // 设置 userInfo,包含完整的用户信息
store.dispatch('lock/unlockScreen')
resolve()
}).catch(error => {
@@ -76,20 +63,15 @@ const user = {
const user = res.data
let avatar = user.avatar || ""
if (!isHttp(avatar)) {
- avatar = (isEmpty(avatar)) ? defAva : process.env.VUE_APP_BASE_API + avatar
+ avatar = (isEmpty(avatar)) ? defAva : state.netConfig.MINIO_ENDPOINT_HTTPS + avatar
}
- if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组
+ if (res.roles && res.roles.length > 0) { // 验证返回的 roles 是否是一个非空数组
commit('SET_ROLES', res.roles)
commit('SET_PERMISSIONS', res.permissions)
} else {
commit('SET_ROLES', ['ROLE_DEFAULT'])
}
- commit('SET_ID', user.userId)
- commit('SET_NAME', user.userName)
- commit('SET_NICK_NAME', user.nickName)
- commit('SET_AVATAR', avatar)
- commit('SET_DEPT', user.grp_name)
- commit('SET_STATUS', user.status)
+ commit('SET_USER_INFO', user)
cache.session.set('pwrChrtype', res.pwdChrtype)
/* 初始密码提示 */
if (res.isDefaultModifyPwd) {
@@ -143,6 +125,7 @@ const user = {
commit('SET_ROLES', [])
commit('SET_PERMISSIONS', [])
removeToken()
+ removeLoginInfo()
resolve()
}).catch(error => {
reject(error)
@@ -155,6 +138,7 @@ const user = {
return new Promise(resolve => {
commit('SET_TOKEN', '')
removeToken()
+ removeLoginInfo()
resolve()
})
}
diff --git a/src/utils/auth.js b/src/utils/auth.js
index a2447f6..52885b7 100644
--- a/src/utils/auth.js
+++ b/src/utils/auth.js
@@ -5,11 +5,19 @@ const TokenKey = 'utalk-token'
export function getToken() {
return Cookies.get(TokenKey)
}
-
+export function getLoginInfo() {
+ return Cookies.get('loginInfo')
+}
export function setToken(token) {
return Cookies.set(TokenKey, token, { expires: 7 })
}
+export function setLoginInfo(loginInfo) {
+ return Cookies.set('loginInfo', loginInfo, { expires: 7 })
+}
export function removeToken() {
return Cookies.remove(TokenKey)
}
+export function removeLoginInfo() {
+ return Cookies.remove('loginInfo')
+}
diff --git a/src/views/login.vue b/src/views/login.vue
index dea6cf9..fdc4e9b 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -19,7 +19,7 @@
@@ -194,7 +194,7 @@ export default {
username: this.loginForm.username,
password: this.md5Encrypt(this.loginForm.password),
psign: this.md5Encrypt("xycloud_" + this.loginForm.password),
- version: "V01.01.16",
+ version: this.$store.getters.loginInfo?.upgrade_data?.version || "V01.01.16",
})
.then(() => {
this.$router.push({ path: this.redirect || "/" }).catch(() => {});
diff --git a/src/views/system/user/profile/index.vue b/src/views/system/user/profile/index.vue
index f04af2a..1871060 100644
--- a/src/views/system/user/profile/index.vue
+++ b/src/views/system/user/profile/index.vue
@@ -1,7 +1,7 @@
-
+
个人信息
@@ -10,65 +10,50 @@
-
+
-
用户名称
-
{{ user.userName }}
+ {{ loginInfo.name }}
-
- 手机号码
-
{{ user.phonenumber }}
+ 邮箱
+ {{ loginInfo.email }}
-
- 用户邮箱
-
{{ user.email }}
-
- -
- 所属部门
-
- {{ user.dept.deptName }}
-
+ 部门
+ {{ loginInfo.group }}
-
职位
-
{{ postGroup }}
+ {{ loginInfo.role }}
-
- 角色
-
{{ roleGroup }}
+ 手机
+ {{ loginInfo.phone }}
-
状态
- {{
- selectDictLabel(
- dict.type.sys_normal_disable,
- user.status
- ) || "-"
- }}
+ {{ loginInfo.online ? "正常" : "离线" }}
-
-
+
修改密码
-
-
-
-
-
+
@@ -79,17 +64,14 @@
import userAvatar from "./userAvatar";
import userInfo from "./userInfo";
import resetPwd from "./resetPwd";
-import { getUserProfile } from "@/api/system/user";
+import { mapGetters } from "vuex";
export default {
name: "Profile",
- dicts: ["sys_normal_disable", "sys_user_sex"],
components: { userAvatar, userInfo, resetPwd },
+ computed: mapGetters(["loginInfo", "userInfo"]),
data() {
return {
- user: {},
- roleGroup: {},
- postGroup: {},
- selectedTab: "resetPwd",
+ selectedTab: "userinfo",
};
},
created() {
@@ -97,16 +79,8 @@ export default {
if (activeTab) {
this.selectedTab = activeTab;
}
- this.getUser();
},
methods: {
- getUser() {
- getUserProfile().then((response) => {
- this.user = response.data;
- this.roleGroup = response.roleGroup;
- this.postGroup = response.postGroup;
- });
- },
},
};