修改了部分UI

This commit is contained in:
86183 2023-11-09 21:11:15 +08:00
parent aad4061a66
commit 5651b91131
1 changed files with 222 additions and 222 deletions

View File

@ -2,11 +2,11 @@
<div class="user-wrapper" :class="theme"> <div class="user-wrapper" :class="theme">
<!-- update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航 --> <!-- update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航 -->
<!-- update-begin author:sunjianlei date:20191@20 for: 解决全局样式冲突的问题 --> <!-- update-begin author:sunjianlei date:20191@20 for: 解决全局样式冲突的问题 -->
<span class="action" @click="showClick"> <!-- <span class="action" @click="showClick">
<a-icon type="search"></a-icon> <a-icon type="search"></a-icon>
</span> </span> -->
<!-- update-begin author:sunjianlei date:20200219 for: 菜单搜索改为动态组件在手机端呈现出弹出框 --> <!-- update-begin author:sunjianlei date:20200219 for: 菜单搜索改为动态组件在手机端呈现出弹出框 -->
<component :is="searchMenuComp" v-show="searchMenuVisible || isMobile()" class="borders" :visible="searchMenuVisible" title="搜索菜单" :footer="null" @cancel="searchMenuVisible=false"> <!-- <component :is="searchMenuComp" v-show="searchMenuVisible || isMobile()" class="borders" :visible="searchMenuVisible" title="搜索菜单" :footer="null" @cancel="searchMenuVisible=false">
<a-select <a-select
class="search-input" class="search-input"
showSearch showSearch
@ -22,266 +22,266 @@
> >
<a-select-option v-for="(site,index) in searchMenuOptions" :key="index" :value="site.id">{{site.meta.title}}</a-select-option> <a-select-option v-for="(site,index) in searchMenuOptions" :key="index" :value="site.id">{{site.meta.title}}</a-select-option>
</a-select> </a-select>
</component> </component> -->
<!-- update-end author:sunjianlei date:20200219 for: 菜单搜索改为动态组件在手机端呈现出弹出框 --> <!-- update-end author:sunjianlei date:20200219 for: 菜单搜索改为动态组件在手机端呈现出弹出框 -->
<!-- update-end author:sunjianlei date:20191220 for: 解决全局样式冲突的问题 --> <!-- update-end author:sunjianlei date:20191220 for: 解决全局样式冲突的问题 -->
<!-- update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航 --> <!-- update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航 -->
<span class="action"> <!-- <span class="action">
<a class="logout_title" target="_blank" href="http://doc.jeecg.com"> <a class="logout_title" target="_blank" href="http://doc.jeecg.com">
<a-icon type="question-circle-o"></a-icon> <a-icon type="question-circle-o"></a-icon>
</a> </a>
</span> </span>
<header-notice class="action"/> <header-notice class="action"/> -->
<a-dropdown> <!-- <a-dropdown> -->
<span class="action action-full ant-dropdown-link user-dropdown-menu"> <!-- <span class="action action-full ant-dropdown-link user-dropdown-menu">
<a-avatar class="avatar" size="small" :src="getAvatar()"/> <a-avatar class="avatar" size="small" :src="getAvatar()"/>
<span v-if="isDesktop()">欢迎您{{ nickname() }}</span> <span v-if="isDesktop()">欢迎您{{ nickname() }}</span>
</span> </span>
<a-menu slot="overlay" class="user-dropdown-menu-wrapper"> <a-menu slot="overlay" class="user-dropdown-menu-wrapper">
<a-menu-item key="0"> <a-menu-item key="0">
<router-link :to="{ name: 'account-center' }"> <router-link :to="{ name: 'account-center' }">
<a-icon type="user"/> <a-icon type="user"/>
<span>个人中心</span> <span>个人中心</span>
</router-link> </router-link>
</a-menu-item> </a-menu-item>
<a-menu-item key="1"> <a-menu-item key="1">
<router-link :to="{ name: 'account-settings-base' }"> <router-link :to="{ name: 'account-settings-base' }">
<a-icon type="setting"/>
<span>账户设置</span>
</router-link>
</a-menu-item>
<a-menu-item key="3" @click="systemSetting">
<a-icon type="tool"/>
<span>系统设置</span>
</a-menu-item>
<a-menu-item key="4" @click="updatePassword">
<a-icon type="setting"/> <a-icon type="setting"/>
<span>密码修改</span> <span>账户设置</span>
</a-menu-item> </router-link>
<a-menu-item key="5" @click="updateCurrentDepart"> </a-menu-item>
<a-icon type="cluster"/> <a-menu-item key="3" @click="systemSetting">
<span>切换部门</span> <a-icon type="tool"/>
</a-menu-item> <span>系统设置</span>
<a-menu-item key="6" @click="clearCache"> </a-menu-item>
<a-icon type="sync"/> <a-menu-item key="4" @click="updatePassword">
<span>清理缓存</span> <a-icon type="setting"/>
</a-menu-item> <span>密码修改</span>
<!-- <a-menu-item key="2" disabled> </a-menu-item>
<a-icon type="setting"/> <a-menu-item key="5" @click="updateCurrentDepart">
<span>测试</span> <a-icon type="cluster"/>
</a-menu-item> <span>切换部门</span>
<a-menu-divider/> </a-menu-item>
<a-menu-item key="3"> <a-menu-item key="6" @click="clearCache">
<a href="javascript:;" @click="handleLogout"> <a-icon type="sync"/>
<a-icon type="logout"/> <span>清理缓存</span>
<span>退出登录</span> </a-menu-item> -->
</a> <!-- <a-menu-item key="2" disabled>
</a-menu-item>--> <a-icon type="setting"/>
</a-menu> <span>测试</span>
</a-dropdown> </a-menu-item>
<a-menu-divider/>
<a-menu-item key="3">
<a href="javascript:;" @click="handleLogout">
<a-icon type="logout"/>
<span>退出登录</span>
</a>
</a-menu-item>-->
<!-- </a-menu>
</a-dropdown> -->
<span class="action"> <span class="action">
<a class="logout_title" href="javascript:;" @click="handleLogout"> <a class="logout_title" href="javascript:;" @click="handleLogout">
<a-icon type="logout"/> <a-icon type="logout"/>
<span v-if="isDesktop()">&nbsp;退出登录</span> <span v-if="isDesktop()">&nbsp;退出登录</span>
</a> </a>
</span> </span>
<user-password ref="userPassword"></user-password> <!-- <user-password ref="userPassword"></user-password>
<depart-select ref="departSelect" :closable="true" title="部门切换"></depart-select> <depart-select ref="departSelect" :closable="true" title="部门切换"></depart-select>
<setting-drawer ref="settingDrawer" :closable="true" title="系统设置"></setting-drawer> <setting-drawer ref="settingDrawer" :closable="true" title="系统设置"></setting-drawer> -->
</div> </div>
</template> </template>
<script> <script>
import HeaderNotice from './HeaderNotice' import HeaderNotice from './HeaderNotice'
import UserPassword from './UserPassword' import UserPassword from './UserPassword'
import SettingDrawer from "@/components/setting/SettingDrawer"; import SettingDrawer from "@/components/setting/SettingDrawer";
import DepartSelect from './DepartSelect' import DepartSelect from './DepartSelect'
import { mapActions, mapGetters,mapState } from 'vuex' import { mapActions, mapGetters,mapState } from 'vuex'
import { mixinDevice } from '@/utils/mixin.js' import { mixinDevice } from '@/utils/mixin.js'
import { getFileAccessHttpUrl,getAction } from "@/api/manage" import { getFileAccessHttpUrl,getAction } from "@/api/manage"
import Vue from 'vue' import Vue from 'vue'
import { UI_CACHE_DB_DICT_DATA } from "@/store/mutation-types" import { UI_CACHE_DB_DICT_DATA } from "@/store/mutation-types"
export default { export default {
name: "UserMenu", name: "UserMenu",
mixins: [mixinDevice], mixins: [mixinDevice],
data(){ data(){
return{ return{
// update-begin author:sunjianlei date:20200219 for: -------------- // update-begin author:sunjianlei date:20200219 for: --------------
searchMenuOptions:[], searchMenuOptions:[],
searchMenuComp: 'span', searchMenuComp: 'span',
searchMenuVisible: false, searchMenuVisible: false,
// update-begin author:sunjianlei date:20200219 for: -------------- // update-begin author:sunjianlei date:20200219 for: --------------
} }
}, },
components: { components: {
HeaderNotice, HeaderNotice,
UserPassword, UserPassword,
DepartSelect, DepartSelect,
SettingDrawer SettingDrawer
}, },
props: { props: {
theme: { theme: {
type: String, type: String,
required: false, required: false,
default: 'dark' default: 'dark'
}
},
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
created() {
let lists = []
this.searchMenus(lists,this.permissionMenuList)
this.searchMenuOptions=[...lists]
},
mounted() {
//
if (process.env.VUE_APP_SSO == 'true') {
let depart = this.userInfo().orgCode
if (!depart) {
this.updateCurrentDepart()
} }
}
},
computed: {
...mapState({
//
permissionMenuList: state => state.user.permissionList
})
},
/* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
watch: {
// update-begin author:sunjianlei date:20200219 for:
device: {
immediate: true,
handler() {
this.searchMenuVisible = false
this.searchMenuComp = this.isMobile() ? 'a-modal' : 'span'
},
}, },
// update-end author:sunjianlei date:20200219 for:
},
methods: {
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/ /* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
created() { showClick() {
let lists = [] this.searchMenuVisible = true
this.searchMenus(lists,this.permissionMenuList)
this.searchMenuOptions=[...lists]
}, },
mounted() { hiddenClick(){
// this.shows = false
if (process.env.VUE_APP_SSO == 'true') {
let depart = this.userInfo().orgCode
if (!depart) {
this.updateCurrentDepart()
}
}
},
computed: {
...mapState({
//
permissionMenuList: state => state.user.permissionList
})
}, },
/* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/ /* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
watch: { ...mapActions(["Logout"]),
// update-begin author:sunjianlei date:20200219 for: ...mapGetters(["nickname", "avatar","userInfo"]),
device: { getAvatar(){
immediate: true, return getFileAccessHttpUrl(this.avatar())
handler() {
this.searchMenuVisible = false
this.searchMenuComp = this.isMobile() ? 'a-modal' : 'span'
},
},
// update-end author:sunjianlei date:20200219 for:
}, },
methods: { handleLogout() {
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/ const that = this
showClick() {
this.searchMenuVisible = true
},
hiddenClick(){
this.shows = false
},
/* update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
...mapActions(["Logout"]),
...mapGetters(["nickname", "avatar","userInfo"]),
getAvatar(){
return getFileAccessHttpUrl(this.avatar())
},
handleLogout() {
const that = this
this.$confirm({ this.$confirm({
title: '提示', title: '提示',
content: '真的要注销登录吗 ?', content: '真的要注销登录吗 ?',
onOk() { onOk() {
return that.Logout({}).then(() => { return that.Logout({}).then(() => {
// update-begin author:scott date:20211223 for:JTC-198退 // update-begin author:scott date:20211223 for:JTC-198退
//that.$router.push({ path: '/user/login' }); //that.$router.push({ path: '/user/login' });
window.location.reload() window.location.reload()
// update-end author:scott date:20211223 for:JTC-198退 // update-end author:scott date:20211223 for:JTC-198退
}).catch(err => { }).catch(err => {
that.$message.error({ that.$message.error({
title: '错误', title: '错误',
description: err.message description: err.message
})
}) })
}, })
onCancel() { },
}, onCancel() {
}); },
}, });
updatePassword(){ },
let username = this.userInfo().username updatePassword(){
this.$refs.userPassword.show(username) let username = this.userInfo().username
}, this.$refs.userPassword.show(username)
updateCurrentDepart(){ },
this.$refs.departSelect.show() updateCurrentDepart(){
}, this.$refs.departSelect.show()
systemSetting(){ },
this.$refs.settingDrawer.showDrawer() systemSetting(){
}, this.$refs.settingDrawer.showDrawer()
/* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/ },
searchMenus(arr,menus){ /* update_begin author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
for(let i of menus){ searchMenus(arr,menus){
if(!i.hidden && "layouts/RouteView"!==i.component){ for(let i of menus){
arr.push(i) if(!i.hidden && "layouts/RouteView"!==i.component){
} arr.push(i)
if(i.children&& i.children.length>0){
this.searchMenus(arr,i.children)
}
} }
}, if(i.children&& i.children.length>0){
filterOption(input, option) { this.searchMenus(arr,i.children)
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
// update_begin author:sunjianlei date:20191230 for:
searchMethods(value) {
let route = this.searchMenuOptions.filter(item => item.id === value)[0]
//update-begin-author:sunjianlei date:20220111 for: JTC-702Token
if(route.component.includes('layouts/IframePageView')){
this.$router.push(route)
}else{
this.$router.push({ path: route.path })
} }
//update-end-author:sunjianlei date:20220111 for: JTC-702Token
this.searchMenuVisible = false
},
// update_end author:sunjianlei date:20191230 for:
/*update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
/*update_begin author:liushaoqian date:20200507 for: 刷新缓存*/
clearCache(){
getAction("sys/dict/refleshCache").then((res) => {
if (res.success) {
//
getAction("sys/dict/queryAllDictItems").then((res) => {
if (res.success) {
Vue.ls.remove(UI_CACHE_DB_DICT_DATA)
Vue.ls.set(UI_CACHE_DB_DICT_DATA, res.result, 7 * 24 * 60 * 60 * 1000)
}
})
this.$message.success("刷新缓存完成!");
}
}).catch(e=>{
this.$message.warn("刷新缓存失败!");
console.log("刷新失败",e)
})
} }
/*update_end author:liushaoqian date:20200507 for: 刷新缓存*/ },
filterOption(input, option) {
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
},
// update_begin author:sunjianlei date:20191230 for:
searchMethods(value) {
let route = this.searchMenuOptions.filter(item => item.id === value)[0]
//update-begin-author:sunjianlei date:20220111 for: JTC-702Token
if(route.component.includes('layouts/IframePageView')){
this.$router.push(route)
}else{
this.$router.push({ path: route.path })
}
//update-end-author:sunjianlei date:20220111 for: JTC-702Token
this.searchMenuVisible = false
},
// update_end author:sunjianlei date:20191230 for:
/*update_end author:zhaoxin date:20191129 for: 做头部菜单栏导航*/
/*update_begin author:liushaoqian date:20200507 for: 刷新缓存*/
clearCache(){
getAction("sys/dict/refleshCache").then((res) => {
if (res.success) {
//
getAction("sys/dict/queryAllDictItems").then((res) => {
if (res.success) {
Vue.ls.remove(UI_CACHE_DB_DICT_DATA)
Vue.ls.set(UI_CACHE_DB_DICT_DATA, res.result, 7 * 24 * 60 * 60 * 1000)
}
})
this.$message.success("刷新缓存完成!");
}
}).catch(e=>{
this.$message.warn("刷新缓存失败!");
console.log("刷新失败",e)
})
} }
/*update_end author:liushaoqian date:20200507 for: 刷新缓存*/
} }
}
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
/* update_begin author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/ /* update_begin author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
/* update-begin author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */ /* update-begin author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */
.user-wrapper .search-input { .user-wrapper .search-input {
width: 180px; width: 180px;
color: inherit; color: inherit;
/deep/ .ant-select-selection { /deep/ .ant-select-selection {
background-color: inherit; background-color: inherit;
border: 0; border: 0;
border-bottom: 1px solid white; border-bottom: 1px solid white;
&__placeholder, &__field__placeholder { &__placeholder, &__field__placeholder {
color: inherit; color: inherit;
}
} }
} }
/* update-end author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */ }
/* update_end author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/ /* update-end author:sunjianlei date:20191220 for: 解决全局样式冲突问题 */
/* update_end author:zhaoxin date:20191129 for: 让搜索框颜色能随主题颜色变换*/
</style> </style>
<style scoped> <style scoped>
.logout_title { .logout_title {
color: inherit; color: inherit;
text-decoration: none; text-decoration: none;
} }
</style> </style>