11.22修改意见部分调整
This commit is contained in:
parent
32d97e6648
commit
206dbd1219
@ -10,9 +10,6 @@
|
||||
<el-dropdown-item>
|
||||
<span style="display:block;" @click="handleDetail">{{ $t('global.personalDetails') }}</span>
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item v-if="companyAdmin && isSameProject">
|
||||
<span style="display:block;" @click="handleOrganization">教学管理</span>
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item v-if="isNotCompanyAdmin && isCGY && isSameProject">
|
||||
<span style="display:block;" @click="handleStatistics">数据统计</span>
|
||||
</el-dropdown-item>
|
||||
@ -45,15 +42,14 @@ export default {
|
||||
companyAdmin() {
|
||||
return this.$store.state.user.companyAdmin;
|
||||
},
|
||||
isNotCompanyAdmin(){
|
||||
return this.$store.state.user.companyAdmin==false;
|
||||
isNotCompanyAdmin() {
|
||||
return this.$store.state.user.companyAdmin == false;
|
||||
},
|
||||
isSameProject() {
|
||||
return this.$store.state.user.companyProjectList.includes(getSessionStorage('project').toUpperCase());
|
||||
},
|
||||
isCGY() {
|
||||
return getSessionStorage('project') === 'cgy';
|
||||
// gzb
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@ -70,10 +66,7 @@ export default {
|
||||
handleDetail() {
|
||||
this.$refs.userInfo.doShow();
|
||||
},
|
||||
handleOrganization() {
|
||||
this.$router.push({ path: `/info/organization` });
|
||||
},
|
||||
handleStatistics(){
|
||||
handleStatistics() {
|
||||
this.$router.push({ path: `/info/studentStatistics` });
|
||||
}
|
||||
}
|
||||
|
@ -82,7 +82,6 @@
|
||||
style="width: 100%; height: 100%; padding: 0 10px; display: block;"
|
||||
>{{ $t(child.meta.i18n) }}</a>
|
||||
</div>
|
||||
<!-- <el-menu-item :key="cdx" :index="item.redirect ? item.redirect : (item.path+'/'+child.path)" :route="(child.route && child.route()) ? child.route() : null"> -->
|
||||
<el-menu-item v-else :key="cdx" :index="item.redirect ? item.redirect : (item.path+'/'+child.path)">
|
||||
<span v-if="child.meta" slot="title">{{ $t(child.meta.i18n) }}</span>
|
||||
</el-menu-item>
|
||||
@ -92,25 +91,27 @@
|
||||
</el-submenu>
|
||||
</template>
|
||||
</template>
|
||||
<el-submenu v-if="!thirdLogin" :key="99" index="/info" :show-timeout="100">
|
||||
<span slot="title">{{ username }}</span>
|
||||
<el-menu-item :key="991" index="/info/personalInfo">个人信息</el-menu-item>
|
||||
<el-menu-item v-if="isNotCompanyAdmin && isCGY && isSameProject" :key="992" index="/info/studentStatistics">数据统计</el-menu-item>
|
||||
</el-submenu>
|
||||
<div v-if="!thirdLogin" class="rightGroup">
|
||||
<!-- <quick-entry ref="quickEntry" /> -->
|
||||
<user-logout ref="userLogout" />
|
||||
<el-tooltip class="item" effect="dark" content="退出" placement="bottom-end">
|
||||
<i class="el-icon-switch-button" style="color: #fff;font-weight: bolder;cursor: pointer;" @click="logout" />
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</el-menu>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapGetters } from 'vuex';
|
||||
import UserLogout from './Logout';
|
||||
import QuickEntry from './Entry';
|
||||
import SystemTitle from './Title';
|
||||
import {getSessionStorage } from '@/utils/auth';
|
||||
import { ThirdLoginList } from '@/scripts/ProjectConfig';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
UserLogout,
|
||||
QuickEntry,
|
||||
SystemTitle
|
||||
},
|
||||
data() {
|
||||
@ -128,8 +129,19 @@ export default {
|
||||
]),
|
||||
thirdLogin() {
|
||||
return ThirdLoginList.includes(getSessionStorage('project'));
|
||||
},
|
||||
username() {
|
||||
return this.$store.state.user.nickname;
|
||||
},
|
||||
isNotCompanyAdmin() {
|
||||
return this.$store.state.user.companyAdmin == false;
|
||||
},
|
||||
isSameProject() {
|
||||
return this.$store.state.user.companyProjectList.includes(getSessionStorage('project').toUpperCase());
|
||||
},
|
||||
isCGY() {
|
||||
return getSessionStorage('project') === 'cgy';
|
||||
}
|
||||
|
||||
},
|
||||
watch: {
|
||||
$route(val) {
|
||||
@ -185,6 +197,11 @@ export default {
|
||||
setTimeout(() => { // 路由跳转
|
||||
this.$refs.keMenu.activeIndex = index;
|
||||
}, 100);
|
||||
},
|
||||
logout() {
|
||||
this.$store.dispatch('LogOut').then(() => {
|
||||
location.reload(); // 为了重新实例化vue-router对象 避免bug
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -194,10 +211,8 @@ export default {
|
||||
$height: 61px;
|
||||
|
||||
.rightGroup{
|
||||
// position: absolute;
|
||||
// right: 35px;
|
||||
display: inline-block;
|
||||
padding: 0 35px;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
|
@ -1,13 +1,5 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
v-dialogDrag
|
||||
:title="$t('global.personalDetails')"
|
||||
:visible.sync="visible"
|
||||
width="470px"
|
||||
:close-on-click-modal="false"
|
||||
:before-close="doClose"
|
||||
class="userInfo_box"
|
||||
>
|
||||
<div>
|
||||
<div>
|
||||
<div class="form_box">
|
||||
<div class="title">{{ $t('global.compellation') }}:</div>
|
||||
@ -236,14 +228,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--<div class="form_box">-->
|
||||
<!--<div class="title">单位:</div>-->
|
||||
<!--<div class="content_box_info">-->
|
||||
<!--<div class="show_box">-->
|
||||
<!--<span>{{ userInfo.companyId }}</span>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<!--</div>-->
|
||||
<div v-if="!wmOpenId" class="form_box">
|
||||
<div class="title">绑定微信:</div>
|
||||
<div class="content_box_info">
|
||||
@ -262,10 +246,7 @@
|
||||
<div v-if="bindSuccess"><span>绑定微信成功</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button type="primary" @click="doClose">{{ $t('global.close') }}</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
|
@ -179,6 +179,7 @@ const PreTheoryImport = () => import('@/views/competitionManage/bankList/preImpo
|
||||
const MessageBoard = () => import('@/views/messageBoard/index');
|
||||
const BoardManage = () => import('@/views/messageBoard/manage');
|
||||
const OrganizationManage = () => import('@/views/organization/index');
|
||||
const PersonalInfo = () => import('@/views/info/personalInfo');
|
||||
const OrgClassManage = () => import('@/views/organization/classManage/index');
|
||||
const OrgDraftLessonManage = () => import('@/views/organization/draftLessonManage/index');
|
||||
const OrgLessonManage = () => import('@/views/organization/lessonManage/index');
|
||||
@ -627,6 +628,11 @@ export const publicAsyncRoute = [
|
||||
component: Layout,
|
||||
hidden: true,
|
||||
children: [
|
||||
{
|
||||
path: 'personalInfo',
|
||||
component: PersonalInfo,
|
||||
hidden: true
|
||||
},
|
||||
{ // 单位组织管理
|
||||
path: 'organization',
|
||||
component: OrganizationManage,
|
||||
|
691
src/views/info/personalInfo.vue
Normal file
691
src/views/info/personalInfo.vue
Normal file
@ -0,0 +1,691 @@
|
||||
<template>
|
||||
<div style="width: 100%;height: 100%;text-align: center;">
|
||||
<div style="width: 450px;margin: 100px auto">
|
||||
<div class="form_box">
|
||||
<div class="title">{{ $t('global.compellation') }}:</div>
|
||||
<div class="content_box_info">
|
||||
<div v-show="nameShow" class="show_box">
|
||||
<span>{{ userInfo.name }}</span>
|
||||
<i class="el-icon-edit" @click="switcherName" />
|
||||
</div>
|
||||
<div v-show="!nameShow" class="flex_box">
|
||||
<el-input
|
||||
v-model="editInfo.name"
|
||||
:placeholder="$t('global.enterName')"
|
||||
maxlength="20"
|
||||
size="mini"
|
||||
class="input_box"
|
||||
/>
|
||||
<div class="button_box">
|
||||
<el-button
|
||||
size="mini"
|
||||
class="button_box"
|
||||
:disabled="!editInfo.name"
|
||||
@click="saveName"
|
||||
>{{ $t('global.save') }}</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
class="button_box"
|
||||
type="text"
|
||||
@click="switcherName"
|
||||
>{{ $t('global.cancel') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_box">
|
||||
<div class="title">{{ $t('global.nickName') }}:</div>
|
||||
<div class="content_box_info">
|
||||
<div v-show="nickNameShow" class="show_box">
|
||||
<span>{{ userInfo.nickname }}</span>
|
||||
<i class="el-icon-edit" @click="switcherNickname" />
|
||||
</div>
|
||||
<div v-show="!nickNameShow" class="flex_box">
|
||||
<el-input
|
||||
v-model="editInfo.nickname"
|
||||
:placeholder="$t('global.enterNickname')"
|
||||
maxlength="20"
|
||||
size="mini"
|
||||
class="input_box"
|
||||
/>
|
||||
<div class="button_box">
|
||||
<el-button
|
||||
size="mini"
|
||||
class="button_box"
|
||||
:disabled="!editInfo.nickname"
|
||||
@click="saveNickName"
|
||||
>{{ $t('global.save') }}</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
class="button_box"
|
||||
type="text"
|
||||
@click="switcherNickname"
|
||||
>{{ $t('global.cancel') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_box">
|
||||
<div class="title">{{ $t('global.mobile') }}:</div>
|
||||
<div class="content_box_info">
|
||||
<div v-show="mobileShow" class="show_box">
|
||||
<span>{{ geTel(userInfo.mobile) }}</span>
|
||||
<i class="el-icon-edit" @click="switcherMobile" />
|
||||
</div>
|
||||
<div v-show="!mobileShow" class="flex_box">
|
||||
<el-input
|
||||
v-model="editInfo.mobile"
|
||||
:placeholder="$t('global.enterMobile')"
|
||||
maxlength="11"
|
||||
size="mini"
|
||||
class="input_box"
|
||||
/>
|
||||
<el-select v-model="nationCode" size="mini" class="selectCountry">
|
||||
<el-option
|
||||
v-for="item in countryList"
|
||||
:key="item.value"
|
||||
:label="item.name"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<el-input
|
||||
v-model="mobileCode"
|
||||
:placeholder="$t('global.verificationCode')"
|
||||
size="mini"
|
||||
class="code_box"
|
||||
style="margin-top: 10px;"
|
||||
/>
|
||||
<el-button
|
||||
size="mini"
|
||||
style="margin-top: 10px; margin-right: 10px;"
|
||||
:disabled="mobileCodeTime != 0"
|
||||
@click="sendMobileCode"
|
||||
>
|
||||
{{ $t('global.sendCode') }}
|
||||
<span
|
||||
v-if="mobileCodeTime"
|
||||
>{{ mobileCodeTime }}</span>
|
||||
</el-button>
|
||||
<div class="button_box" style="margin-top: 10px;">
|
||||
<el-button
|
||||
size="mini"
|
||||
class="button_box"
|
||||
:disabled="!mobileCode"
|
||||
@click="saveMobile"
|
||||
>{{ $t('global.save') }}</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
class="button_box"
|
||||
type="text"
|
||||
@click="switcherMobile"
|
||||
>{{ $t('global.cancel') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_box">
|
||||
<div class="title">{{ $t('global.email') }}:</div>
|
||||
<div class="content_box_info">
|
||||
<div v-show="emailShow" class="show_box">
|
||||
<span>{{ userInfo.email }}</span>
|
||||
<i class="el-icon-edit" @click="switcherEmail" />
|
||||
</div>
|
||||
<div v-show="!emailShow" class="flex_box">
|
||||
<el-input
|
||||
v-model="editInfo.email"
|
||||
:placeholder="$t('global.enterEmail')"
|
||||
size="mini"
|
||||
class="input_box"
|
||||
/>
|
||||
<el-input
|
||||
v-model="emailCode"
|
||||
:placeholder="$t('global.verificationCode')"
|
||||
size="mini"
|
||||
class="code_box"
|
||||
style="margin-top: 10px;"
|
||||
/>
|
||||
<el-button
|
||||
size="mini"
|
||||
style="margin-top: 10px; margin-right: 10px;"
|
||||
:disabled="emailCodeTime != 0"
|
||||
@click="sendEmailCode"
|
||||
>
|
||||
{{ $t('global.sendCode') }}
|
||||
<span
|
||||
v-if="emailCodeTime"
|
||||
>{{ emailCodeTime }}</span>
|
||||
</el-button>
|
||||
<div class="button_box" style="margin-top: 10px;">
|
||||
<el-button
|
||||
size="mini"
|
||||
class="button_box"
|
||||
:disabled="!emailCode"
|
||||
@click="saveEmail"
|
||||
>{{ $t('global.save') }}</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
class="button_box"
|
||||
type="text"
|
||||
@click="switcherEmail"
|
||||
>{{ $t('global.cancel') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form_box">
|
||||
<div class="title">{{ $t('global.passWord') }}:</div>
|
||||
<div class="content_box_info">
|
||||
<div v-show="passwordShow" class="show_box">
|
||||
<span>******</span>
|
||||
<i class="el-icon-edit" @click="switcherPassWord" />
|
||||
</div>
|
||||
<div v-show="!passwordShow" class="flex_box">
|
||||
<div class="passWord_box">
|
||||
<span>{{ $t('global.newPassWord') }}:</span>
|
||||
<el-input
|
||||
v-model="newPassWord1"
|
||||
:placeholder="$t('global.enterPassWord')"
|
||||
maxlength="20"
|
||||
show-password
|
||||
size="mini"
|
||||
class="input_box"
|
||||
/>
|
||||
</div>
|
||||
<div style="height: 28px; line-height: 28px; margin-bottom: 10px;">
|
||||
<el-input
|
||||
v-model="passWordCode"
|
||||
:placeholder="$t('global.verificationCode')"
|
||||
size="mini"
|
||||
class="code_box"
|
||||
/>
|
||||
<el-button
|
||||
size="mini"
|
||||
style="margin-right: 10px;"
|
||||
:disabled="passWordCodeTime != 0"
|
||||
@click="sendPassWordCode"
|
||||
>
|
||||
{{ $t('global.sendMobileCode') }}
|
||||
<span
|
||||
v-if="passWordCodeTime"
|
||||
>{{ passWordCodeTime }}</span>
|
||||
</el-button>
|
||||
</div>
|
||||
<div class="button_box" style="width: 150px;">
|
||||
<el-button
|
||||
size="mini"
|
||||
class="button_box"
|
||||
:disabled="!passWordCode"
|
||||
@click="savePassWord"
|
||||
>{{ $t('global.save') }}</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
class="button_box"
|
||||
type="text"
|
||||
@click="switcherPassWord"
|
||||
>{{ $t('global.cancel') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="!wmOpenId" class="form_box">
|
||||
<div class="title">绑定微信:</div>
|
||||
<div class="content_box_info">
|
||||
<el-button v-if="!binding&&!bindSuccess" type="primary" size="small" style="position: absolute;" @click="generateBindQrCode">生成微信二维码</el-button>
|
||||
<div v-if="binding && !bindSuccess" class="login-code-box" @click="generateBindQrCode">
|
||||
<qrcode-vue
|
||||
v-loading="loadingCode"
|
||||
:value="loginUrl"
|
||||
:class-name="qrcodeClassName"
|
||||
:size="150"
|
||||
:element-loading-text="this.$t('login.clickRefresh')"
|
||||
element-loading-spinner="el-icon-refresh"
|
||||
element-loading-background="rgba(255, 255, 255, 0.9)"
|
||||
/>
|
||||
</div>
|
||||
<div v-if="bindSuccess"><span>绑定微信成功</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import md5 from 'js-md5';
|
||||
import { getInfo } from '@/api/login';
|
||||
import { getToken } from '@/utils/auth'; // 验权 getDesignToken
|
||||
import {
|
||||
getUserinfoName,
|
||||
getUserinfoNickname,
|
||||
getUserinfoMobile,
|
||||
getUserinfoMobileCode,
|
||||
getUserinfoEmailCode,
|
||||
getUserinfoEmail,
|
||||
getUserinfoPassword,
|
||||
getBindWxQrCodeUrl
|
||||
} from '@/api/management/user';
|
||||
import QrcodeVue from 'qrcode.vue';
|
||||
import { setInterval, clearInterval } from 'timers';
|
||||
import { checkLoginStatus } from '@/api/login';
|
||||
import { getSessionStorage } from '@/utils/auth';
|
||||
|
||||
export default {
|
||||
name: 'PersonalInfo',
|
||||
components: { QrcodeVue },
|
||||
data() {
|
||||
return {
|
||||
loginUrl: '',
|
||||
loadingCode: false,
|
||||
sessionId: '',
|
||||
binding: false,
|
||||
bindSuccess: false,
|
||||
qrcodeClassName: 'login-qrcode',
|
||||
checkTimeout: null,
|
||||
userInfo: {
|
||||
name: '',
|
||||
nickname: '',
|
||||
mobile: '',
|
||||
email: '',
|
||||
passWord: '',
|
||||
companyId: ''
|
||||
},
|
||||
editInfo: {
|
||||
name: '',
|
||||
nickname: '',
|
||||
mobile: '',
|
||||
email: '',
|
||||
passWord: '',
|
||||
companyId: ''
|
||||
},
|
||||
nationCode: '86',
|
||||
nameShow: true,
|
||||
nickNameShow: true,
|
||||
mobileShow: true,
|
||||
emailShow: true,
|
||||
passwordShow: true,
|
||||
mobileCode: null,
|
||||
emailCode: null,
|
||||
passWordCode: null,
|
||||
checkLogin: null,
|
||||
|
||||
oldPassWord: null,
|
||||
newPassWord1: null,
|
||||
|
||||
mobileCodeTime: 0,
|
||||
emailCodeTime: 0,
|
||||
passWordCodeTime: 0,
|
||||
|
||||
emailTime: null,
|
||||
mobileTime: null,
|
||||
passWordTime: null,
|
||||
countryList: [
|
||||
{ name: this.$t('global.china'), value: '86' },
|
||||
{ name: this.$t('global.australia'), value: '61' },
|
||||
{ name: this.$t('global.england'), value: '44' },
|
||||
{ name: this.$t('global.hongKong'), value: '852' },
|
||||
{ name: this.$t('global.Japanese'), value: '81' },
|
||||
{ name: this.$t('global.macao'), value: '853' },
|
||||
{ name: this.$t('global.singapore'), value: '65' },
|
||||
{ name: this.$t('global.taiwan'), value: '886' },
|
||||
{ name: this.$t('global.america'), value: '1' }
|
||||
],
|
||||
nationCodeInit: '86', // 默认国际地区
|
||||
loginClient: 'LianKeTang',
|
||||
project:'',
|
||||
wmOpenId: '',
|
||||
companyList: []
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
info() {
|
||||
return this.$store.state.user;
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initData();
|
||||
},
|
||||
beforeDestroy() {
|
||||
this.binding = false;
|
||||
this.bindSuccess = false;
|
||||
this.nameShow = true;
|
||||
this.nickNameShow = true;
|
||||
this.mobileShow = true;
|
||||
this.emailShow = true;
|
||||
this.passwordShow = true;
|
||||
},
|
||||
methods: {
|
||||
geTel(tel) {
|
||||
const reg = /^(\d{3})\d{4}(\d{4})$/;
|
||||
if (tel) {
|
||||
return tel.replace(reg, '$1****$2');
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
},
|
||||
initData() {
|
||||
this.binding = false;
|
||||
this.bindSuccess = false;
|
||||
this.project = getSessionStorage('project');
|
||||
const token = getToken();
|
||||
getInfo(token).then(response => {
|
||||
const user = response.data;
|
||||
this.userInfo = {
|
||||
name: user.name,
|
||||
nickname: user.nickname,
|
||||
mobile: user.mobile,
|
||||
email: user.email,
|
||||
passWord: '',
|
||||
companyId: user.companyId
|
||||
};
|
||||
this.wmOpenId = user.wmOpenId || '';
|
||||
this.oldPassWord = user.password;
|
||||
this.nationCode = user.nationCode ? user.nationCode : '86';
|
||||
this.nationCodeInit = user.nationCode ? user.nationCode : '86';
|
||||
}).catch(error => {
|
||||
console.log(error, '请求个人信息失败');
|
||||
});
|
||||
},
|
||||
switcherName() {
|
||||
this.editInfo.name = this.userInfo.name;
|
||||
this.nameShow = !this.nameShow;
|
||||
},
|
||||
async saveName() {
|
||||
if (this.editInfo.name) {
|
||||
try {
|
||||
await getUserinfoName(this.info.id, this.editInfo.name);
|
||||
this.userInfo.name = this.editInfo.name;
|
||||
this.nameShow = !this.nameShow;
|
||||
this.$store.commit('SET_NAME', this.editInfo.name);
|
||||
} catch (error) {
|
||||
console.log(error, '错误');
|
||||
}
|
||||
}
|
||||
},
|
||||
async saveCompany() {
|
||||
try {
|
||||
await getUserinfoName(this.info.id, this.editInfo.name);
|
||||
this.userInfo.name = this.editInfo.name;
|
||||
this.nameShow = !this.nameShow;
|
||||
this.$store.commit('SET_NAME', this.editInfo.name);
|
||||
} catch (error) {
|
||||
console.log(error, '错误');
|
||||
}
|
||||
},
|
||||
switcherNickname() {
|
||||
this.editInfo.nickname = this.userInfo.nickname;
|
||||
this.nickNameShow = !this.nickNameShow;
|
||||
},
|
||||
async saveNickName() {
|
||||
if (this.editInfo.nickname) {
|
||||
try {
|
||||
await getUserinfoNickname(
|
||||
this.info.id,
|
||||
this.editInfo.nickname
|
||||
);
|
||||
this.userInfo.nickname = this.editInfo.nickname;
|
||||
this.nickNameShow = !this.nickNameShow;
|
||||
this.$store.commit('SET_NICKNAME', this.editInfo.nickname);
|
||||
} catch (error) {
|
||||
console.log(error, '错误');
|
||||
}
|
||||
}
|
||||
},
|
||||
switcherMobile() {
|
||||
this.mobileShow = !this.mobileShow;
|
||||
},
|
||||
async saveMobile() {
|
||||
if (this.editInfo.mobile && this.mobileCode) {
|
||||
try {
|
||||
const params = {
|
||||
mobile: this.editInfo.mobile,
|
||||
nationCode: this.nationCode,
|
||||
validCode: this.mobileCode
|
||||
};
|
||||
await getUserinfoMobile(this.info.id, params);
|
||||
this.userInfo.mobile = this.editInfo.mobile;
|
||||
this.nationCodeInit = this.nationCode;
|
||||
this.mobileShow = !this.mobileShow;
|
||||
this.mobileCode = null;
|
||||
} catch (error) {
|
||||
this.$message.info(this.$t('global.codeError'));
|
||||
}
|
||||
}
|
||||
},
|
||||
async sendMobileCode() {
|
||||
const random = Math.floor(Math.random() * 10000 + 1);
|
||||
const timeCount = Date.parse(new Date()) / 1000;
|
||||
const pass = `${timeCount}${this.nationCode}${this.editInfo.mobile}${random}`;
|
||||
const param = {
|
||||
mobile: this.editInfo.mobile,
|
||||
nationCode: this.nationCode,
|
||||
rd: random,
|
||||
time: timeCount,
|
||||
token: md5(pass)
|
||||
};
|
||||
try {
|
||||
this.mobileCodeTime = 30;
|
||||
this.mobileTime = setInterval(() => {
|
||||
this.mobileCodeTime--;
|
||||
if (this.mobileCodeTime <= 0) {
|
||||
this.mobileCodeTime = 0;
|
||||
clearInterval(this.mobileTime);
|
||||
this.mobileTime = null;
|
||||
}
|
||||
}, 1000);
|
||||
await getUserinfoMobileCode(param);
|
||||
} catch (error) {
|
||||
this.$message.info(this.$t('global.codeFaile'));
|
||||
}
|
||||
},
|
||||
|
||||
switcherEmail() {
|
||||
// this.editInfo.email = this.userInfo.email;
|
||||
this.emailShow = !this.emailShow;
|
||||
},
|
||||
async saveEmail() {
|
||||
if (this.editInfo.email && this.emailCode) {
|
||||
try {
|
||||
const params = {
|
||||
email: this.editInfo.email,
|
||||
validCode: this.emailCode
|
||||
};
|
||||
await getUserinfoEmail(this.info.id, params);
|
||||
this.userInfo.email = this.editInfo.email;
|
||||
this.emailShow = !this.emailShow;
|
||||
this.emailCode = null;
|
||||
} catch (error) {
|
||||
this.$message.info(this.$t('global.codeError'));
|
||||
}
|
||||
}
|
||||
},
|
||||
async sendEmailCode() {
|
||||
try {
|
||||
this.emailCodeTime = 30;
|
||||
this.emailTime = setInterval(() => {
|
||||
this.emailCodeTime--;
|
||||
if (this.emailCodeTime <= 0) {
|
||||
this.emailCodeTime = 0;
|
||||
clearInterval(this.emailTime);
|
||||
this.emailTime = null;
|
||||
}
|
||||
}, 1000);
|
||||
await getUserinfoEmailCode(this.editInfo.email);
|
||||
} catch (error) {
|
||||
this.$message.info(this.$t('global.codeFaile'));
|
||||
}
|
||||
},
|
||||
|
||||
switcherPassWord() {
|
||||
this.passwordShow = !this.passwordShow;
|
||||
},
|
||||
async savePassWord() {
|
||||
if (this.newPassWord1.length <= 5) {
|
||||
this.$message.info(this.$t('global.passWordLength'));
|
||||
} else {
|
||||
this.uploadPassword();
|
||||
}
|
||||
},
|
||||
async uploadPassword() {
|
||||
if (this.newPassWord1) {
|
||||
// 请求更新密码
|
||||
const param = {
|
||||
password: md5(this.newPassWord1),
|
||||
vfCode: this.passWordCode
|
||||
};
|
||||
try {
|
||||
await getUserinfoPassword(this.info.id, param);
|
||||
this.passwordShow = !this.passwordShow;
|
||||
this.newPassWord1 = '';
|
||||
this.passWordCode = null;
|
||||
} catch (error) {
|
||||
console.log(error, 11);
|
||||
}
|
||||
} else {
|
||||
this.$message.info(this.$t('global.passWordSome'));
|
||||
}
|
||||
},
|
||||
generateBindQrCode() { // 获取微信小程序绑定二维码
|
||||
getBindWxQrCodeUrl().then(response => {
|
||||
this.loadingCode = false;
|
||||
this.loginUrl = response.data.url;
|
||||
this.binding = true;
|
||||
});
|
||||
},
|
||||
checkLoginStatus() {
|
||||
const self = this;
|
||||
// 销毁则不再定时
|
||||
if (!this.binding) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 清空已存在的定时器
|
||||
// 设置定时器检测
|
||||
this.clearTimer(this.checkLogin);
|
||||
this.checkLogin = setTimeout(() => {
|
||||
checkLoginStatus(self.sessionId).then(response => {
|
||||
// 设置扫码登录
|
||||
if (response.data.status == '2') {
|
||||
self.clearTimer(self.checkLogin);
|
||||
self.bindSuccess = true;
|
||||
} else {
|
||||
self.checkLoginStatus();
|
||||
}
|
||||
}).catch(error => {
|
||||
if (error.data && error.data.status === '1') {
|
||||
self.scanSuccess = true;
|
||||
}
|
||||
self.checkLoginStatus();
|
||||
});
|
||||
}, 3000);
|
||||
},
|
||||
clearTimer(timer) {
|
||||
if (timer) {
|
||||
clearTimeout(timer);
|
||||
timer = null;
|
||||
}
|
||||
},
|
||||
async sendPassWordCode() {
|
||||
if (this.userInfo.mobile) {
|
||||
const random = Math.floor(Math.random() * 10000 + 1);
|
||||
const timeCount = Date.parse(new Date()) / 1000;
|
||||
const pass = `${timeCount}${this.nationCodeInit}${this.userInfo.mobile}${random}`;
|
||||
const param = {
|
||||
mobile: this.userInfo.mobile,
|
||||
nationCode: this.nationCodeInit,
|
||||
rd: random,
|
||||
time: timeCount,
|
||||
token: md5(pass)
|
||||
};
|
||||
try {
|
||||
this.passWordCodeTime = 30;
|
||||
this.passWordTime = setInterval(() => {
|
||||
this.passWordCodeTime--;
|
||||
if (this.passWordCodeTime <= 0) {
|
||||
this.passWordCodeTime = 0;
|
||||
clearInterval(this.mobileTime);
|
||||
this.passWordTime = null;
|
||||
}
|
||||
}, 1000);
|
||||
await getUserinfoMobileCode(param);
|
||||
} catch (error) {
|
||||
this.$message.info(this.$t('global.codeFaile'));
|
||||
}
|
||||
} else {
|
||||
this.passwordShow = !this.passwordShow;
|
||||
this.$message.info(this.$t('global.enterMobileNumber'));
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scope>
|
||||
.flex_box {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.form_box {
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
margin-bottom: 10px;
|
||||
display: flex;
|
||||
|
||||
.selectCountry {
|
||||
width: 90px;
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
}
|
||||
.title {
|
||||
width: 80px;
|
||||
text-align: left;
|
||||
font-size: 14px;
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
}
|
||||
.content_box_info {
|
||||
flex:1;
|
||||
margin: 0;
|
||||
.el-icon-edit {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.show_box {
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
}
|
||||
.input_box {
|
||||
font-size: 14px;
|
||||
width: 200px;
|
||||
margin-right: 10px;
|
||||
flex: none;
|
||||
line-height: 0;
|
||||
}
|
||||
.code_box {
|
||||
font-size: 14px;
|
||||
width: 150px;
|
||||
margin-right: 15px;
|
||||
flex: none;
|
||||
line-height: 0;
|
||||
}
|
||||
.button_box {
|
||||
line-height: 0;
|
||||
height: 28px;
|
||||
}
|
||||
|
||||
.passWord_box {
|
||||
height: 28px;
|
||||
line-height: 28px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.login-qrcode {
|
||||
width: 150px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style rel="stylesheet/scss" lang="scss">
|
||||
.userInfo_box {
|
||||
.el-dialog__body {
|
||||
padding: 0 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -557,6 +557,7 @@ export default {
|
||||
// });
|
||||
// });
|
||||
// this.menuList = this.projectMenuMap[this.project];
|
||||
|
||||
this.menuList = this.allMenuList;
|
||||
window.addEventListener('click', this.close, false);
|
||||
},
|
||||
|
@ -1,22 +1,12 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="title_content">{{ companyName + '教学管理' }}</div>
|
||||
<el-button v-if="!hideBack" type="text" class="lessonManageBack" @click="back">返回</el-button>
|
||||
<div class="lessonManageInfo">
|
||||
<el-menu class="lessonManageMenu" default-active="2-1">
|
||||
<el-menu-item index="1" @click="clickMenu">
|
||||
<img :src="classIcon" class="teachMenu">
|
||||
<span class="teachMenuTitle" :style="{color: $route.path.includes('classManage')?'#5BDBFF': '#000'}">班级管理</span>
|
||||
</el-menu-item>
|
||||
<el-menu-item index="5" @click="clickMenu">
|
||||
<!-- <img :src="classIcon" class="teachMenu"> -->
|
||||
<i class="el-icon-user" />
|
||||
<span class="teachMenuTitle" :style="{color: $route.path.includes('studentManage')?'#5BDBFF': '#000'}">学生管理</span>
|
||||
</el-menu-item>
|
||||
<!-- <el-menu-item index="6" @click="clickMenu">
|
||||
<img :src="ruleIcon" class="teachMenu">
|
||||
<span class="teachMenuTitle" :style="{color: $route.path.includes('trainingDesign')?'#5BDBFF': '#000'}">实训设计</span>
|
||||
</el-menu-item> -->
|
||||
<el-menu-item index="7" @click="clickMenu">
|
||||
<img :src="ruleIcon" class="teachMenu">
|
||||
<span class="teachMenuTitle" :style="{color: $route.path.includes('trainingManage')?'#5BDBFF': '#000'}">实训管理</span>
|
||||
@ -25,24 +15,10 @@
|
||||
<img :src="lessonIcon" class="teachMenu">
|
||||
<span class="teachMenuTitle" :style="{color: $route.path.includes('theoryManage')?'#5BDBFF': '#000'}">理论题目管理</span>
|
||||
</el-menu-item>
|
||||
<!-- <el-submenu index="2">
|
||||
<template slot="title">
|
||||
<img :src="lessonIcon" class="teachMenu">
|
||||
<span class="teachMenuTitle">课程管理</span>
|
||||
</template>
|
||||
<el-menu-item-group>
|
||||
<el-menu-item index="2-1" class="lessonIcon" :style="{color: $route.path.includes('lessonManage')?'#5BDBFF': '#000'}" @click="clickMenu">发布课程管理</el-menu-item>
|
||||
<el-menu-item index="2-2" class="lessonIcon" :style="{color: $route.path.includes('draftLessonManage')?'#5BDBFF': '#000'}" @click="clickMenu">草稿课程管理</el-menu-item>
|
||||
</el-menu-item-group>
|
||||
</el-submenu> -->
|
||||
<el-menu-item index="3" @click="clickMenu">
|
||||
<img :src="examIcon" class="teachMenu">
|
||||
<span slot="title" class="teachMenuTitle" :style="{color: $route.path.includes('examManage')?'#5BDBFF': '#000'}">考试管理</span>
|
||||
</el-menu-item>
|
||||
<!-- <el-menu-item index="4" @click="clickMenu">
|
||||
<img :src="ruleIcon" class="teachMenu">
|
||||
<span slot="title" :style="{color: $route.path.includes('ruleManage')?'#5BDBFF': '#000'}" class="teachMenuTitle">评价管理</span>
|
||||
</el-menu-item> -->
|
||||
</el-menu>
|
||||
<div class="lessonManageOther">
|
||||
<router-view />
|
||||
@ -75,41 +51,21 @@ export default {
|
||||
computed: {
|
||||
companyName() {
|
||||
return this.$store.state.user.companyName;
|
||||
},
|
||||
hideBack() {
|
||||
return this.$route.query.enter === 'teacher';
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
||||
},
|
||||
|
||||
methods:{
|
||||
clickMenu(val) {
|
||||
if (val.index === '2-1') {
|
||||
this.$router.replace('/teaching/organization/lessonManage');
|
||||
} else if (val.index === '2-2') {
|
||||
this.$router.replace('/teaching/organization/draftLessonManage');
|
||||
} else if (val.index === '1') {
|
||||
if (val.index === '1') {
|
||||
this.$router.replace('/teaching/organization/classManage');
|
||||
} else if (val.index === '3') {
|
||||
this.$router.replace('/teaching/organization/examManage');
|
||||
} else if (val.index === '4') {
|
||||
this.$router.replace('/teaching/organization/ruleManage');
|
||||
} else if (val.index === '5') {
|
||||
this.$router.replace('/teaching/organization/studentManage');
|
||||
}
|
||||
// else if (val.index === '6') {
|
||||
// this.$router.push('/teaching/organization/trainingDesign'); //
|
||||
// }
|
||||
else if (val.index === '7') {
|
||||
} else if (val.index === '7') {
|
||||
this.$router.replace('/teaching/organization/trainingManage'); //
|
||||
} else if (val.index === '8') {
|
||||
this.$router.replace('/teaching/organization/theoryManage');
|
||||
}
|
||||
},
|
||||
back() {
|
||||
this.$router.go(-1);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user