From e977b8737d88aa1bd0286fe27bf4fd22cb2501d9 Mon Sep 17 00:00:00 2001 From: 田源 <lastanimals@163.com> Date: 星期四, 18 七月 2024 17:34:42 +0800 Subject: [PATCH] 整合代码 --- Source/plt-web/plt-web-ui/src/page/index/top/index.vue | 440 ++++++++++++++++++++++++++++++++---------------------- 1 files changed, 263 insertions(+), 177 deletions(-) diff --git a/Source/plt-web/plt-web-ui/src/page/index/top/index.vue b/Source/plt-web/plt-web-ui/src/page/index/top/index.vue index 6b99b79..7225469 100644 --- a/Source/plt-web/plt-web-ui/src/page/index/top/index.vue +++ b/Source/plt-web/plt-web-ui/src/page/index/top/index.vue @@ -1,255 +1,341 @@ <template> <div class="avue-top"> <div class="top-bar__left"> - <div class="avue-breadcrumb" + <div v-if="showCollapse" :class="[{ 'avue-breadcrumb--active': isCollapse }]" - v-if="showCollapse"> + class="avue-breadcrumb"> <i class="icon-navicon" @click="setCollapse"></i> </div> </div> <div class="top-bar__title"> - <div class="top-bar__item top-bar__item--show" - v-if="showMenu"> + <div v-if="showMenu" + class="top-bar__item top-bar__item--show"> <top-menu ref="topMenu"></top-menu> </div> - <span class="top-bar__item" - v-if="showSearch"> + <span v-if="showSearch" + class="top-bar__item"> <top-search></top-search> </span> </div> <div class="top-bar__right"> <el-tooltip v-if="showColor" - effect="dark" :content="$t('navbar.color')" + effect="dark" placement="bottom"> <div class="top-bar__item"> <top-color></top-color> </div> </el-tooltip> - <el-tooltip v-if="showDebug" - effect="dark" - :content="logsFlag?$t('navbar.bug'):logsLen+$t('navbar.bugs')" - placement="bottom"> - <div class="top-bar__item"> - <top-logs></top-logs> - </div> - </el-tooltip> +<!-- 閿欒鏃ュ織--> +<!-- <el-tooltip v-if="showDebug"--> +<!-- :content="logsFlag?$t('navbar.bug'):logsLen+$t('navbar.bugs')"--> +<!-- effect="dark"--> +<!-- placement="bottom">--> +<!-- <div class="top-bar__item">--> +<!-- <top-logs></top-logs>--> +<!-- </div>--> +<!-- </el-tooltip>--> <el-tooltip v-if="showLock" - effect="dark" :content="$t('navbar.lock')" + effect="dark" placement="bottom"> <div class="top-bar__item"> <top-lock></top-lock> </div> </el-tooltip> <el-tooltip v-if="showTheme" - effect="dark" :content="$t('navbar.theme')" + effect="dark" placement="bottom"> <div class="top-bar__item top-bar__item--show"> <top-theme></top-theme> </div> </el-tooltip> - <el-tooltip effect="dark" - :content="$t('navbar.notice')" - placement="bottom"> - <div class="top-bar__item top-bar__item--show"> - <top-notice></top-notice> - </div> - </el-tooltip> - <el-tooltip effect="dark" - :content="$t('navbar.language')" +<!-- 娑堟伅閫氱煡--> +<!-- <el-tooltip :content="$t('navbar.notice')"--> +<!-- effect="dark"--> +<!-- placement="bottom">--> +<!-- <div class="top-bar__item top-bar__item--show">--> +<!-- <top-notice></top-notice>--> +<!-- </div>--> +<!-- </el-tooltip>--> + <el-tooltip :content="$t('navbar.language')" + effect="dark" placement="bottom"> <div class="top-bar__item top-bar__item--show"> <top-lang></top-lang> </div> </el-tooltip> <el-tooltip v-if="showFullScren" - effect="dark" :content="isFullScren?$t('navbar.screenfullF'):$t('navbar.screenfull')" + effect="dark" placement="bottom"> <div class="top-bar__item"> <i :class="isFullScren?'icon-tuichuquanping':'icon-quanping'" @click="handleScreen"></i> </div> </el-tooltip> - <img class="top-bar__img" - :src="userInfo.avatar"> + <img :src="userInfo.avatar" + class="top-bar__img"> <el-dropdown> <span class="el-dropdown-link"> - {{userInfo.userName}} + {{ userInfo.userName }} <i class="el-icon-arrow-down el-icon--right"></i> </span> <el-dropdown-menu slot="dropdown"> <el-dropdown-item> - <router-link to="/">{{$t('navbar.dashboard')}}</router-link> + <router-link to="/">{{ $t('navbar.dashboard') }}</router-link> </el-dropdown-item> - <el-dropdown-item> - <router-link to="/info/index">{{$t('navbar.userinfo')}}</router-link> + <el-dropdown-item @click.native="changePasswordHandler"> + <!-- <router-link to="/info/index">{{ $t('navbar.userinfo') }}</router-link>--> + 淇敼瀵嗙爜 </el-dropdown-item> <el-dropdown-item v-if="this.website.switchMode" @click.native="switchDept" - >{{$t('navbar.switchDept')}} + >{{ $t('navbar.switchDept') }} </el-dropdown-item> - <el-dropdown-item @click.native="logout" - divided>{{$t('navbar.logOut')}} + <el-dropdown-item divided + @click.native="logout">{{ $t('navbar.logOut') }} </el-dropdown-item> </el-dropdown-menu> </el-dropdown> - <el-dialog title="鐢ㄦ埛淇℃伅閫夋嫨" + <el-dialog :visible.sync="userBox" append-to-body - :visible.sync="userBox" + title="鐢ㄦ埛淇℃伅閫夋嫨" width="350px"> - <avue-form ref="form" :option="userOption" v-model="userForm" @submit="submitSwitch"/> + <avue-form ref="form" v-model="userForm" :option="userOption" @submit="submitSwitch"/> + </el-dialog> + + <!-- 淇敼瀵嗙爜瀵硅瘽妗� --> + <el-dialog + v-dialogDrag + :visible.sync="passwordVisible" + append-to-body="true" + class="avue-dialog" + title="淇敼瀵嗙爜" + width="50%"> + <avue-form ref="form" v-model="passwordForm" :option="passwordOption" @submit="submitSwitch"/> </el-dialog> </div> </div> </template> <script> - import {resetRouter} from '@/router/router' - import {mapGetters, mapState} from "vuex"; - import {fullscreenToggel, listenfullscreen} from "@/util/util"; - import topLock from "./top-lock"; - import topMenu from "./top-menu"; - import topSearch from "./top-search"; - import topTheme from "./top-theme"; - import topLogs from "./top-logs"; - import topColor from "./top-color"; - import topNotice from './top-notice' - import topLang from "./top-lang"; +import {resetRouter} from '@/router/router' +import {mapGetters, mapState} from "vuex"; +import {fullscreenToggel, listenfullscreen} from "@/util/util"; +import topLock from "./top-lock"; +import topMenu from "./top-menu"; +import topSearch from "./top-search"; +import topTheme from "./top-theme"; +import topLogs from "./top-logs"; +import topColor from "./top-color"; +import topNotice from './top-notice' +import topLang from "./top-lang"; +import {changePassword} from "@/api/user" +import func from "@/util/func"; - export default { - components: { - topLock, - topMenu, - topSearch, - topTheme, - topLogs, - topColor, - topNotice, - topLang - }, - name: "top", - data() { - return { - userBox: false, - userForm: { - deptId: '', - roleId: '' - }, - userOption: { - labelWidth: 70, - submitBtn: true, - emptyBtn: false, - submitText: '鍒囨崲', - column: [ - { - label: '閮ㄩ棬', - prop: 'deptId', - type: 'select', - props: { - label: 'deptName', - value: 'id' - }, - dicUrl: '/api/blade-system/dept/select', - span: 24, - display: false, - rules: [{ +export default { + components: { + topLock, + topMenu, + topSearch, + topTheme, + topLogs, + topColor, + topNotice, + topLang + }, + name: "top", + data() { + return { + passwordVisible: false, + passwordForm: {}, + passwordOption: { + submitText:'淇濆瓨', + column: [ + { + label: '鐧婚檰瀵嗙爜', + prop: 'oldPassword', + span: 24, + labelWidth:"15%", + type:'password', + rules: [ + { required: true, - message: "璇烽�夋嫨閮ㄩ棬", - trigger: "blur" - }], - }, - { - label: '瑙掕壊', - prop: 'roleId', - type: 'select', - props: { - label: 'roleName', - value: 'id' - }, - dicUrl: '/api/blade-system/role/select', - span: 24, - display: false, - rules: [{ + message: '璇疯緭鍏ョ櫥闄嗗瘑鐮�', + trigger: 'blur' + } + ] + }, + { + label: '鏂扮櫥闄嗗瘑鐮�', + prop: 'password', + span: 24, + labelWidth:"15%", + type:'password', + rules: [ + { required: true, - message: "璇烽�夋嫨瑙掕壊", - trigger: "blur" - }], + message: '璇疯緭鍏ユ柊鐧婚檰瀵嗙爜', + trigger: 'blur' + } + ] + }, + { + label: '鏂板瘑鐮佺櫥闄嗙‘璁�', + prop: 'confirmPassword', + span: 24, + labelWidth:"15%", + type:'password', + rules: [ + { + required: true, + message: '璇风‘璁ょ櫥闄嗗瘑鐮�', + trigger: 'blur' + } + ] + } + ] + }, + userBox: false, + userForm: { + deptId: '', + roleId: '' + }, + userOption: { + labelWidth: 70, + submitBtn: true, + emptyBtn: false, + submitText: '鍒囨崲', + column: [ + { + label: '閮ㄩ棬', + prop: 'deptId', + type: 'select', + props: { + label: 'deptName', + value: 'id' }, - ] - } - }; - }, - filters: {}, - created() { - }, - mounted() { - listenfullscreen(this.setScreen); - }, - computed: { - ...mapState({ - showDebug: state => state.common.showDebug, - showTheme: state => state.common.showTheme, - showLock: state => state.common.showLock, - showFullScren: state => state.common.showFullScren, - showCollapse: state => state.common.showCollapse, - showSearch: state => state.common.showSearch, - showMenu: state => state.common.showMenu, - showColor: state => state.common.showColor - }), - ...mapGetters([ - "userInfo", - "isFullScren", - "tagWel", - "tagList", - "isCollapse", - "tag", - "logsLen", - "logsFlag" - ]) - }, - methods: { - handleScreen() { - fullscreenToggel(); - }, - setCollapse() { - this.$store.commit("SET_COLLAPSE"); - }, - setScreen() { - this.$store.commit("SET_FULLSCREN"); - }, - switchDept() { - const userId = this.userInfo.user_id; - const deptColumn = this.findObject(this.userOption.column, "deptId"); - deptColumn.dicUrl = `/api/blade-system/dept/select?userId=${userId}`; - deptColumn.display = true; - const roleColumn = this.findObject(this.userOption.column, "roleId"); - roleColumn.dicUrl = `/api/blade-system/role/select?userId=${userId}`; - roleColumn.display = true; - this.userBox = true; - }, - submitSwitch (form, done) { - this.$store.dispatch("refreshToken", form).then(() => { - this.userBox = false; - this.$router.push({path: "/"}); - }) - done(); - }, - logout() { - this.$confirm(this.$t("logoutTip"), this.$t("tip"), { - confirmButtonText: this.$t("submitText"), - cancelButtonText: this.$t("cancelText"), - type: "warning" - }).then(() => { - this.$store.dispatch("LogOut").then(() => { - resetRouter(); - this.$router.push({path: "/login"}); - }); - }); + dicUrl: '/api/blade-system/dept/select', + span: 24, + display: false, + rules: [{ + required: true, + message: "璇烽�夋嫨閮ㄩ棬", + trigger: "blur" + }], + }, + { + label: '瑙掕壊', + prop: 'roleId', + type: 'select', + props: { + label: 'roleName', + value: 'id' + }, + dicUrl: '/api/blade-system/role/select', + span: 24, + display: false, + rules: [{ + required: true, + message: "璇烽�夋嫨瑙掕壊", + trigger: "blur" + }], + }, + ] } + }; + }, + filters: {}, + created() { + }, + mounted() { + listenfullscreen(this.setScreen); + }, + computed: { + ...mapState({ + showDebug: state => state.common.showDebug, + showTheme: state => state.common.showTheme, + showLock: state => state.common.showLock, + showFullScren: state => state.common.showFullScren, + showCollapse: state => state.common.showCollapse, + showSearch: state => state.common.showSearch, + showMenu: state => state.common.showMenu, + showColor: state => state.common.showColor + }), + ...mapGetters([ + "userInfo", + "isFullScren", + "tagWel", + "tagList", + "isCollapse", + "tag", + "logsLen", + "logsFlag" + ]) + }, + methods: { + // 淇敼瀵嗙爜 + changePasswordHandler() { + this.passwordVisible = true; + }, + handleScreen() { + fullscreenToggel(); + }, + setCollapse() { + this.$store.commit("SET_COLLAPSE"); + }, + setScreen() { + this.$store.commit("SET_FULLSCREN"); + }, + switchDept() { + const userId = this.userInfo.user_id; + const deptColumn = this.findObject(this.userOption.column, "deptId"); + deptColumn.dicUrl = `/api/blade-system/dept/select?userId=${userId}`; + deptColumn.display = true; + const roleColumn = this.findObject(this.userOption.column, "roleId"); + roleColumn.dicUrl = `/api/blade-system/role/select?userId=${userId}`; + roleColumn.display = true; + this.userBox = true; + }, + submitSwitch(form, done) { + let userInfo = JSON.parse(localStorage.getItem('saber-userInfo')); + + let params = { + userOid:userInfo.content.userOid, + oldPassword:func.encryptData(form.oldPassword,'daliantan0v0vcip'), + password:func.encryptData(form.password,'daliantan0v0vcip'), + confirmPassword:func.encryptData(form.confirmPassword,'daliantan0v0vcip'), + + } + changePassword(params).then(res =>{ + if(res.data.code === 200){ + this.$message.success(res.data.msg); + this.passwordVisible = false; + } + }).catch(err => { + console.log(err); + }) + // this.$store.dispatch("refreshToken", form).then(() => { + // this.userBox = false; + // this.$router.push({path: "/"}); + // }) + done(); + }, + logout() { + this.$confirm(this.$t("logoutTip"), this.$t("tip"), { + confirmButtonText: this.$t("submitText"), + cancelButtonText: this.$t("cancelText"), + type: "warning" + }).then(() => { + this.$store.dispatch("LogOut").then(() => { + resetRouter(); + this.$router.push({path: "/login"}); + }); + }); } - }; + } +}; </script> <style lang="scss" scoped> -- Gitblit v1.9.3