最新版本541200007最新版本541200007
| | |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1.0"> |
| | | <link rel="icon" href="<%= BASE_URL %>favicon.ico"> |
| | | <title>èæ¹çèæºæ
§å®æ¶å®å
¨é²èç³»ç»</title> |
| | | <title> |
| | | title: process.env.VUE_APP_TITLE,</title> |
| | | </head> |
| | | <body> |
| | | <noscript> |
| | |
| | | export function loginByPassword (data) { |
| | | return request.post('/login', data) |
| | | } |
| | | export function getSystemConfig () { |
| | | return request.get('/systemConfig') |
| | | } |
| | | export function loginByPhone (data) { |
| | | return request.post('/loginByPhone', data) |
| | | } |
| | |
| | | <div class="common-header"> |
| | | <div class="header"> |
| | | <div class="logo"> |
| | | <div class="title"> <img src="@/assets/system.png" alt="" />{{ title }}</div> |
| | | <div class="title"> <img src="@/assets/system.png" alt="" />{{sysConfig.subtitle || title }}</div> |
| | | <div class="list"> |
| | | <div :class="index==currentIndex?'item active':'item'" v-for="(item,index) in topMenuList.list" :key="item.id" @click="getHeaderNav(item,index)" :index="index">{{item.label}} |
| | | <div v-if="index==currentIndex" class="linellae"></div> |
| | |
| | | <script> |
| | | import { mapState, mapMutations } from 'vuex' |
| | | import GlobalAlertWindow from './GlobalAlertWindow' |
| | | import { logout, updatePwd } from '@/api/system/common' |
| | | import { getSystemConfig, logout, updatePwd } from '@/api/system/common' |
| | | import { getAppHeaderNav } from '@/api' |
| | | export default { |
| | | name: 'CommonHeader', |
| | |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapState(['menuData', 'userInfo', 'topMenuList', 'currentIndex']) |
| | | ...mapState(['menuData', 'userInfo', 'topMenuList', 'currentIndex', 'sysConfig']) |
| | | // title () { |
| | | // return this.$route.meta.title |
| | | // } |
| | | }, |
| | | created () { |
| | | |
| | | this.getSystemConfig() |
| | | }, |
| | | mounted () { |
| | | // needChangePwd 0 : é»è®¤å¯ç éè¦ä¿®æ¹ï¼1 ä¸éè¦ |
| | |
| | | } |
| | | }, |
| | | methods: { |
| | | ...mapMutations(['setUserInfo', 'switchCollapseMenu', 'clearUserInfo', 'setTopMenuCurrent', 'setCurrentIndex']), |
| | | ...mapMutations(['setUserInfo', 'switchCollapseMenu', 'clearUserInfo', 'setTopMenuCurrent', 'setCurrentIndex', 'setSysconfig']), |
| | | // ä¿®æ¹å¯ç |
| | | changePwd () { |
| | | this.visible.changePwd = true |
| | | this.$nextTick(() => { |
| | | this.$refs.changePwdDataForm.resetFields() |
| | | }) |
| | | }, |
| | | getSystemConfig () { |
| | | if (!this.sysConfig.subTitle) { |
| | | getSystemConfig() |
| | | .then((res) => { |
| | | if (res && res.subtitle) { |
| | | this.setSysconfig(res) |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | validatePassword (rule, value, callback) { |
| | | if (!value) { |
| | |
| | | // } else { |
| | | // callback() // éªè¯éè¿ |
| | | // } |
| | | let typeCount = 0; |
| | | if (/[a-z]/.test(value)) typeCount++; // å°å忝 |
| | | if (/[A-Z]/.test(value)) typeCount++; // 大å忝 |
| | | if (/\d/.test(value)) typeCount++; // æ°å |
| | | if (/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(value)) typeCount++; // ç¹æ®å符 |
| | | let typeCount = 0 |
| | | if (/[a-z]/.test(value)) typeCount++ // å°å忝 |
| | | if (/[A-Z]/.test(value)) typeCount++ // 大å忝 |
| | | if (/\d/.test(value)) typeCount++ // æ°å |
| | | if (/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(value)) typeCount++ // ç¹æ®å符 |
| | | if (typeCount >= 3) { |
| | | callback() |
| | | } else { |
| | |
| | | } |
| | | } |
| | | }, |
| | | getHeaderNav (item,index) { |
| | | getHeaderNav (item, index) { |
| | | this.setCurrentIndex(index) |
| | | if(item.linkType === 0){ |
| | | if (item.linkType === 0) { |
| | | this.setTopMenuCurrent(item) |
| | | }else{ |
| | | } else { |
| | | if (item.url && item.url === 'goHKAF' && item.params != null) { |
| | | this.getHKAFHeaderNav(item.params, item.label) |
| | | } else if (item.url && item.url.indexOf('http') === 0) { |
| | |
| | | getHKAFHeaderNav (type, label) { |
| | | getAppHeaderNav(type).then(res => { |
| | | if (label === 'å®é²ä¸å¿') { |
| | | let openWindow = window.open(res, '_blank') |
| | | const openWindow = window.open(res, '_blank') |
| | | // setTimeout(() => { |
| | | // openWindow.close() |
| | | // }, 7 * 1000) |
| | |
| | | router.afterEach((to, from, failure) => { |
| | | setTimeout(function () { |
| | | computeTableHeightIndex() |
| | | window.addEventListener('resize', function(){ |
| | | computeTableHeightIndex()} |
| | | window.addEventListener('resize', function () { |
| | | computeTableHeightIndex() |
| | | } |
| | | ) |
| | | }, 1000) |
| | | |
| | | }) |
| | | function computeTableHeightIndex () { |
| | | const height = window.innerHeight |
| | | // console.log('beforeEach========================ï¼' + height) |
| | | const height13 = getEleHeghtByClassName('common-header', 0) |
| | | const height4 = getEleHeghtByClassName('table-pagination', 0,-20) |
| | | const height4 = getEleHeghtByClassName('table-pagination', 0, -20) |
| | | const height5 = document.getElementsByTagName('thead') && document.getElementsByTagName('thead')[0] ? document.getElementsByTagName('thead')[0].clientHeight : 0 |
| | | if (document.getElementsByClassName('main_app') && document.getElementsByClassName('main_app')[0]) { |
| | | // console.log('main_app========================') |
| | |
| | | const height9 = getEleHeghtByClassName('static_wrap', 0) |
| | | const height10 = getEleHeghtByClassName('query_btns', 0) |
| | | const height11 = getEleHeghtByClassName('el-tabs-ele', 0) |
| | | const height12 = getEleHeghtByClassName('platgroup_tabs', 0,20) |
| | | router.app.$store.commit('setTableHeightNew', height -10 - height2 - height3 - height4 - height5 - height6 - height7 - height9 - height10 - height11 - height12 - height13) |
| | | const height12 = getEleHeghtByClassName('platgroup_tabs', 0, 20) |
| | | router.app.$store.commit('setTableHeightNew', height - 10 - height2 - height3 - height4 - height5 - height6 - height7 - height9 - height10 - height11 - height12 - height13) |
| | | // console.log('gableHeightNew', router.app.$store.state.tableHeightNew) |
| | | } else { |
| | | // console.log('tableLayout========================') |
| | |
| | | // ç»å½ç¨æ·ä¿¡æ¯ |
| | | userInfo: null, |
| | | tableHeightNew: 300, |
| | | sysConfig: { title: '', subtitle: '' }, |
| | | primaryColor: '#2080f7', |
| | | // é¦é¡µ |
| | | homePage: null, |
| | |
| | | |
| | | const mutations = { |
| | | // 设置顶é¨èåç´¢å¼ |
| | | setCurrentIndex(state, index) { |
| | | setCurrentIndex (state, index) { |
| | | console.log('设置顶é¨èåç´¢å¼', index) |
| | | state.currentIndex = index |
| | | }, |
| | | setSysconfig (state, config) { |
| | | state.sysConfig = { title: config.title || '', subtitle: config.subtitle || '' } |
| | | document.title = state.sysConfig.title+ state.sysConfig.subtitle |
| | | }, |
| | | // 忢èåç¶æ |
| | | switchCollapseMenu (state, value) { |
| | |
| | | }, |
| | | // 设置é¦é¡µè·¯ç±ä¿¡æ¯ |
| | | setTopMenuCurrent (state, current) { |
| | | console.log("setTopMenuCurrent",current) |
| | | if(current.id !== state.topMenuCurrent.id){ |
| | | console.log('setTopMenuCurrent', current) |
| | | if (current.id !== state.topMenuCurrent.id) { |
| | | state.topMenuList.list.forEach(item => { |
| | | console.log(item.id, item.id) |
| | | if (current.id == item.id) { |
| | |
| | | }, |
| | | // éç½®èå |
| | | resetMenus: (state) => { |
| | | state.topMenuId=null |
| | | state.topMenuId = null |
| | | state.menuData.list = [] |
| | | }, |
| | | // tags |
| | |
| | | // findindexæ¾è§æ ï¼å¾ªç¯å¤æä¸ä¸ï¼å¦æçäºé£ä¹å°±ä»£è¡¨æç¸åçï¼å°±ä¸å¿
æ·»å ï¼å¦ææ¾ä¸å°é£å°±æ¯-1.就添å |
| | | // state.tags = [{ ...val, keepAlive: false }] |
| | | const result = state.tags.findIndex(item => item.index === val.index) |
| | | if (result === -1) { |
| | | if (result === -1) { |
| | | state.tags.push({ ...val, keepAlive: false }) |
| | | } else { |
| | | state.tags[result] = { ...val, keepAlive: false } |
| | |
| | | <div class="home_header"> |
| | | <div class="mb10 fs17">{{timeInfo}}好ï¼{{ userInfo.realname }}</div> |
| | | <div class="fs13"> |
| | | ä»å¤©æ¯ {{ nowDate }} {{ nowWeek }}ï¼æ¬¢è¿è®¿é®æºæ
§ç©æµååºå®æ¶ä¸ä½åç³»ç» |
| | | ä»å¤©æ¯ {{ nowDate }} {{ nowWeek }}ï¼æ¬¢è¿è®¿é®{{sysConfig.subtitle || title}} |
| | | </div> |
| | | </div> |
| | | <div class="main"> |
| | |
| | | import OperaCarUseBookWindow from '@/components/business/OperaCarUseBookWindow' |
| | | import OperaHiddenDangerWindow from '@/components/business/OperaHiddenDangerWindow' |
| | | import OperaVisitsDesWindow from '@/components/business/OperaVisitsDesWindow' |
| | | import {mapState} from "vuex"; |
| | | const colors = ['#52a4f7', '#7678f7', '#5fc6d5'] |
| | | export default { |
| | | components: { |
| | |
| | | }, |
| | | data () { |
| | | return { |
| | | title: process.env.VUE_APP_TITLE, |
| | | tabPosition: 'right', |
| | | colors, |
| | | timeInfo: 'ä¸å', |
| | |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapState(['sysConfig']), |
| | | userInfo () { |
| | | return this.$store.state.userInfo |
| | | } |
| | |
| | | <img src="@/assets/images/bg@2x.png" class="main_bg" alt=""> |
| | | <div class="login_wrap"> |
| | | <div class="login_img"> |
| | | <div class="h3" style="font-size: 30px; margin-left: 140px; margin-bottom: 0;">èæ¹çè</div> |
| | | <div class="h3">æºæ
§ç©æµååºå®æ¶ä¸ä½åç³»ç»</div> |
| | | <div class="h3" style="font-size: 30px; margin-bottom: 0;">{{sysConfig.title || ''}}</div> |
| | | <div class="h3">{{sysConfig.subtitle || title}}</div> |
| | | </div> |
| | | <div class="form_wrap"> |
| | | <div class="tabs"> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { mapMutations } from 'vuex' |
| | | import { getCaptcha, loginByPassword, sendSmsPost, loginByPhone } from '@/api/system/common' |
| | | import Cookies from "js-cookie" |
| | | import { mapMutations, mapState } from 'vuex' |
| | | import { getCaptcha, loginByPassword, sendSmsPost, loginByPhone, getSystemConfig } from '@/api/system/common' |
| | | import Cookies from 'js-cookie' |
| | | import { Message } from 'element-ui' |
| | | |
| | | export default { |
| | | name: 'Login', |
| | | data() { |
| | | data () { |
| | | return { |
| | | title: process.env.VUE_APP_TITLE, |
| | | loading: false, |
| | | isRemPsd: false, |
| | | username: '', |
| | | password: '', |
| | | phone: '', |
| | | downTime: 0, |
| | | |
| | | smsCode: '', |
| | | activeTab: '0', |
| | | // éªè¯ç |
| | |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | | computed: { |
| | | ...mapState(['sysConfig']) |
| | | }, |
| | | mounted () { |
| | | this.username = localStorage.getItem('username') || '' |
| | | this.password = localStorage.getItem('password') || '' |
| | | this.phone = localStorage.getItem('phone') || '' |
| | | const isRemPsd = localStorage.getItem('isRemPsd') || false |
| | | this.isRemPsd = JSON.parse(isRemPsd) |
| | | this.refreshCaptcha() |
| | | this.getSystemConfig() |
| | | }, |
| | | methods: { |
| | | ...mapMutations(['setUserInfo']), |
| | | ...mapMutations(['setUserInfo', 'setSysconfig']), |
| | | getSystemConfig () { |
| | | getSystemConfig() |
| | | .then((res) => { |
| | | if (res && res.subtitle) { |
| | | this.setSysconfig(res) |
| | | } |
| | | }) |
| | | }, |
| | | // ç»å½ |
| | | login() { |
| | | login () { |
| | | if (this.loading) { |
| | | return |
| | | } |
| | |
| | | this.loading = false |
| | | }) |
| | | } |
| | | |
| | | }, |
| | | getCode() { |
| | | getCode () { |
| | | console.log('getCode') |
| | | const { phone } = this |
| | | if (!phone || phone.length != 11) { |
| | |
| | | sendSmsPost({ phone, type: 0 }).then(res => { |
| | | Message.success('çä¿¡åéæå') |
| | | this.downTime = 60 |
| | | let timer = setInterval(() => { |
| | | const timer = setInterval(() => { |
| | | if (this.downTime == 0) { |
| | | return clearInterval(timer) |
| | | } |
| | |
| | | }, 1000) |
| | | }) |
| | | }, |
| | | tabClick(val) { |
| | | tabClick (val) { |
| | | this.activeTab = val |
| | | }, |
| | | // å·æ°éªè¯ç |
| | | refreshCaptcha() { |
| | | refreshCaptcha () { |
| | | this.captcha.loading = true |
| | | getCaptcha() |
| | | .then(data => { |
| | |
| | | }) |
| | | }, |
| | | // ç»å½åéªè¯ |
| | | __check() { |
| | | __check () { |
| | | if (this.username.trim() === '') { |
| | | this.$tip.error('请è¾å
¥ç¨æ·å') |
| | | return false |
| | |
| | | } |
| | | return true |
| | | } |
| | | }, |
| | | } |
| | | |
| | | } |
| | | </script> |
| | |
| | | height: 600px; |
| | | background: url("../assets/images/login_img@2x.png"); |
| | | background-size: 100% 100%; |
| | | padding-left: 40px; |
| | | padding-top: 60px; |
| | | |
| | | .h2 { |
| | |
| | | align-items: center; |
| | | justify-content: center; |
| | | border-radius: 4px; |
| | | text-align: center; |
| | | width: 208px; |
| | | display: flex; |
| | | margin-bottom: 12px; |
| | | } |
| | | |
| | | .h3 { |
| | | text-align: center; |
| | | font-size: 28px; |
| | | font-weight: 700; |
| | | color: #fff; |
| | |
| | | package com.doumee.api.gateway; |
| | | |
| | | import com.doumee.biz.system.SystemDictDataBiz; |
| | | import com.doumee.config.annotation.LoginNoRequired; |
| | | import com.doumee.config.jwt.JwtProperties; |
| | | import com.doumee.config.jwt.JwtTokenUtil; |
| | |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.dao.system.dto.LoginCabinetDTO; |
| | | import com.doumee.dao.system.dto.LoginH5DTO; |
| | | import com.doumee.dao.system.vo.SystemConfigVo; |
| | | import com.doumee.service.business.third.model.ApiResponse; |
| | | import com.doumee.service.business.third.model.LoginUserInfo; |
| | | import com.doumee.core.utils.Constants; |
| | |
| | | private SystemLoginService systemLoginService; |
| | | @Autowired |
| | | private CaptchaService captchaService; |
| | | @Autowired |
| | | private SystemDictDataBiz systemDictDataBiz; |
| | | |
| | | /** |
| | | * @author Eva.Caesar Liu |
| | |
| | | } |
| | | |
| | | @PreventRepeat(limit = 10, lockTime = 10000) |
| | | @ApiOperation("è·åç³»ç»é
ç½®åæ°") |
| | | @GetMapping("/systemConfig") |
| | | @LoginNoRequired |
| | | public ApiResponse<SystemConfigVo> systemConfig ( ) { |
| | | SystemConfigVo configVo = new SystemConfigVo(); |
| | | configVo.setSubtitle(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SYSTEM_SUBTITLE).getCode()); |
| | | configVo.setTitle(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.SYSTEM_TITLE).getCode()); |
| | | return ApiResponse.success(configVo); |
| | | } |
| | | @PreventRepeat(limit = 10, lockTime = 10000) |
| | | @ApiOperation("ç»å½") |
| | | @PostMapping("/login") |
| | | @LoginNoRequired |
| | |
| | | public static final String HK_PARAM ="HK_PARAM" ; |
| | | public static final String HK_WEBSITE_DOMAIN_URL ="HK_WEBSITE_DOMAIN_URL" ; |
| | | public static final String LED_CONTENT_SPEED ="LED_CONTENT_SPEED" ; |
| | | public static final String SYSTEM_TITLE ="SYSTEM_TITLE" ; |
| | | public static final String SYSTEM_SUBTITLE ="SYSTEM_SUBTITLE" ; |
| | | public static final String HK_HOST ="HK_HOST" ; |
| | | public static final String HK_APPKEY ="HK_APPKEY" ; |
| | | public static final String LOGIN_OUT_URL ="LOGIN_OUT" ; |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.dao.system.vo; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | @ApiModel("ç³»ç»é
ç½®åæ°") |
| | | public class SystemConfigVo { |
| | | |
| | | @ApiModelProperty(value = "主æ é¢") |
| | | private String title; |
| | | |
| | | @ApiModelProperty(value = "ç³»ç»å¯æ é¢") |
| | | private String subtitle; |
| | | |
| | | } |