日志、考核等修改

dev_2022-04-07
yujialong 3 years ago
parent e8adc22c5a
commit eb66e79c8e
  1. BIN
      src/assets/img/log.png
  2. BIN
      src/assets/img/login/school.png
  3. 66
      src/components/log/index.vue
  4. 94
      src/layouts/header/index.vue
  5. 331
      src/pages/account/login/index.vue
  6. 12
      src/pages/ass/list/index.vue
  7. 70
      src/pages/log/list/index.vue
  8. 1
      src/pages/station/preview/index.vue
  9. 7
      src/store/modules/user.js

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 B

@ -0,0 +1,66 @@
<template>
<!-- 更新日志 -->
<div class="timeline">
<div class="item" v-for="(item, i) in list" :key="i">
<span class="date">{{ item.updateTime }}</span>
<div class="right">
<h6>{{ item.versionName }}</h6>
<img v-if="item.coverUrl" :src="item.coverUrl" alt="" class="cover">
<ul class="detail">
<li v-for="(item, i) in item.logContents" :key="i">
<p class="name"><img :src="require('@/assets/img/' + funcList.find(e => e.id === item.type).icon + '.png')" alt=""> {{ funcList.find(e => e.id === item.type).name }}</p>
<div class="val">
<p class="" v-for="(item, i) in item.content" :key="i">{{ item }}</p>
</div>
</li>
</ul>
</div>
</div>
</div>
</template>
<script>
import Setting from '@/setting'
export default {
data() {
return {
list: [],
funcList: [
{
id: 0,
name: '新功能',
icon: 'func'
},
{
id: 1,
name: '修复',
icon: 'bug'
},
{
id: 2,
name: '优化',
icon: 'optimize'
}
]
};
},
mounted() {
this.getData()
},
methods: {
getData() {
this.$get(`${this.api.platformLogList}?platformId=${Setting.platformId}&port=1&versionName=`).then(({ logList }) => {
logList.map((e, i) => {
e.logContents.map(n => {
n.content = n.content.split('\n')
})
})
this.list = logList
}).catch(res => {})
},
}
};
</script>
<style lang="scss" scoped>
</style>

@ -24,6 +24,10 @@
</div> </div>
</div> </div>
</div> </div>
<el-dialog title="更新日志" :visible.sync="logVisible" :close-on-click-modal="false" custom-class="user-dia" append-to-body width="1000px">
<log></log>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
@ -31,34 +35,45 @@ import { mapState, mapMutations, mapActions } from "vuex";
import Setting from "@/setting"; import Setting from "@/setting";
import util from "@/libs/util"; import util from "@/libs/util";
import navbar from "../navbar"; import navbar from "../navbar";
import log from '@/components/log'
export default { export default {
data() { data() {
return { return {
token: util.local.get(Setting.tokenKey), token: util.local.get(Setting.tokenKey),
isIndex: Setting.whiteList.find(e => e === this.$route.path) // isIndex: Setting.whiteList.find(e => e === this.$route.path), //
logVisible: false
}; };
}, },
components: { components: {
navbar navbar,
log
}, },
computed: { computed: {
...mapState("user", [ ...mapState("user", [
"title", "logoUrl", "avatar", "userName", 'customerName' "title", "logoUrl", "avatar", "userName", 'customerName', 'logView'
]) ])
}, },
mounted() { mounted() {
if (this.token) { if (this.token) {
this.getSystemDetail(); this.getSystemDetail();
this.getUserInfo(); this.getUserInfo();
} this.logView || this.getLogStatus() // logViewfalse
}
}, },
methods: { methods: {
...mapMutations("user", [ ...mapMutations("user", [
'SET_CUSTOMERNAME' 'SET_CUSTOMERNAME', 'SET_LOG'
]), ]),
...mapActions("user", [ ...mapActions("user", [
"logout", "setTitle", "setLogoUrl", "setAvatar", "setUserName" "logout", "setTitle", "setLogoUrl", "setAvatar", "setUserName"
]), ]),
//
getLogStatus() {
this.$get(this.api.logNotification).then(({ notification }) => {
this.SET_LOG() // true
if (notification) this.logVisible = true // true
}).catch(res => {})
},
getSystemDetail () { getSystemDetail () {
this.$get(this.api.logoDetail).then(res => { this.$get(this.api.logoDetail).then(res => {
if (res.data) { if (res.data) {
@ -192,4 +207,67 @@ $height: 64px;
} }
} }
} }
/deep/.timeline {
display: flex;
flex-direction: column;
.item {
display: flex;
justify-content: center;
margin-bottom: 30px;
}
.date {
width: 350px;
margin-right: 50px;
text-align: right;
color: #6a6a6a;
font-size: 14px;
}
.right {
flex: 1;
}
h6 {
margin-bottom: 15px;
font-size: 18px;
color: #333;
line-height: 1;
}
.cover {
max-width: 400px;
margin: 10px 0 20px;
}
.detail {
li {
margin-bottom: 20px;
}
.name {
display: flex;
align-items: center;
margin-bottom: 5px;
font-size: 14px;
img {
width: 20px;
margin-right: 8px;
}
}
.val {
font-size: 15px;
line-height: 1.8;
white-space: pre-wrap;
p {
position: relative;
color: #505050;
&:before {
content: '';
display: inline-block;
width: 5px;
height: 5px;
margin: 0 15px 0 8px;
vertical-align: middle;
border-radius: 20px;
background-color: $main-color;
}
}
}
}
}
</style> </style>

@ -7,11 +7,21 @@
<li v-for="(item,index) in tabList" :key="index" :class="{active: form.distinguish == item.id}" @click="typeClick(item)">{{item.label}}</li> <li v-for="(item,index) in tabList" :key="index" :class="{active: form.distinguish == item.id}" @click="typeClick(item)">{{item.label}}</li>
</ul> </ul>
<el-form :model="form" :rules="loginRules" ref="form" style="margin-top: 20px"> <el-form :model="form" :rules="loginRules" ref="form" style="margin-top: 20px">
<el-form-item prop="school">
<label class="school"></label>
<el-select v-model="form.schoolId" clearable filterable placeholder="请选择学校">
<el-option v-for="(item, i) in schoolList" :key="i" :label="item.schoolName" :value="item.schoolId"></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="form.distinguish == '1'" prop="account"> <el-form-item v-if="form.distinguish == '1'" prop="account">
<label class="account"></label> <label class="account"></label>
<el-input v-model.trim="form.account" placeholder="请输入账号"></el-input> <el-input v-model.trim="form.account" placeholder="请输入号"></el-input>
</el-form-item> </el-form-item>
<el-form-item v-if="form.distinguish == '2'" prop="account"> <el-form-item v-if="form.distinguish == '2'" prop="account">
<label class="account"></label>
<el-input v-model.trim="form.account" placeholder="请输入工号"></el-input>
</el-form-item>
<el-form-item v-if="form.distinguish == '3'" prop="account">
<label class="account"></label> <label class="account"></label>
<el-input v-model.trim="form.account" placeholder="请输入手机号/邮箱"></el-input> <el-input v-model.trim="form.account" placeholder="请输入手机号/邮箱"></el-input>
</el-form-item> </el-form-item>
@ -29,12 +39,12 @@
<el-input <el-input
placeholder="请输入验证码" placeholder="请输入验证码"
v-model.trim="form.code" v-model.trim="form.code"
@keyup.enter.native="submitFormLogin" @keyup.enter.native="submit"
> >
</el-input> </el-input>
<img @click="getVerImg" :src="verificationIMG" class="ver-img" alt=""> <img @click="getVerImg" :src="verificationIMG" class="ver-img" alt="">
</el-form-item> </el-form-item>
<el-button class="submit" type="primary" @click="submitFormLogin">登录</el-button> <el-button class="submit" type="primary" @click="submit">登录</el-button>
</el-form> </el-form>
</div> </div>
</div> </div>
@ -72,6 +82,23 @@
</li> </li>
</ul> </ul>
</el-dialog> </el-dialog>
<el-dialog title="请选择您要登录的用户" :visible.sync="userVisible" :close-on-click-modal="false" custom-class="user-dia" width="500px">
<p class="tips">该手机号已绑定以下用户信息</p>
<ul class="users">
<li>
<span>中山大学孙逸仙工号8814</span>
<i class="el-icon-right"></i>
</li>
<li>
<span>中山大学孙逸仙工号8814</span>
<i class="el-icon-right"></i>
</li>
<li>
<span>中山大学孙逸仙工号8814</span>
<i class="el-icon-right"></i>
</li>
</ul>
</el-dialog>
<v-footer ref="footer"></v-footer> <v-footer ref="footer"></v-footer>
</div> </div>
</template> </template>
@ -82,20 +109,23 @@ import { mapMutations, mapActions } from "vuex";
import util from "@/libs/util"; import util from "@/libs/util";
import Setting from "@/setting"; import Setting from "@/setting";
import axios from "axios" import axios from "axios"
export default { export default {
data: function() { data: function() {
return { return {
tabList: [ tabList: [
{ {
id: '1', id: '1',
label: '账号' label: '学生学号登录'
},{ }, {
id: '2', id: '2',
label: '老师工号登录'
}, {
id: '3',
label: '手机号/邮箱' label: '手机号/邮箱'
} }
], ],
verificationIMG: "", verificationIMG: "",
schoolList: [],
form: { form: {
account: "", account: "",
password: "", password: "",
@ -118,7 +148,8 @@ export default {
phoneBtnText: "发送验证码", phoneBtnText: "发送验证码",
selectVisible: false, selectVisible: false,
selectedRole: '', selectedRole: '',
token: '' token: '',
userVisible: false
}; };
}, },
components: { components: {
@ -128,6 +159,7 @@ export default {
this.getVerImg(); this.getVerImg();
}, },
mounted() { mounted() {
// this.getSchool()
// //
this.$once("hook:beforeDestroy", function() { this.$once("hook:beforeDestroy", function() {
clearInterval(this.phoneTimer); clearInterval(this.phoneTimer);
@ -141,15 +173,28 @@ export default {
...mapActions("user", [ ...mapActions("user", [
"setInfo" "setInfo"
]), ]),
getSchool() {
this.$get(this.api.querySchool, {
provinceId: '',
cityId: ''
}).then(res => {
this.schoolList = res.list
}).catch(res => {})
},
getVerImg() { // getVerImg() { //
this.form.random = Math.floor(Math.random() * 999999999); this.form.random = Math.floor(Math.random() * 999999999);
this.verificationIMG = this.api.verification + "?random=" + `${this.form.random}`; this.verificationIMG = this.api.verification + "?random=" + `${this.form.random}`;
}, },
typeClick(tab) { // typeClick(tab) { //
this.form.distinguish = tab.id const { id } = tab
this.form.distinguish = id
this.form.account = ""; this.form.account = "";
this.$refs.form.clearValidate(); this.$refs.form.clearValidate();
this.loginRules.account[0].message = tab.id === "1" ? "请输入账号" : "请输入手机号/邮箱"; this.loginRules.account[0].message = id === '1' ?
'请输入学号' :
id === '2' ?
'请输入工号' :
'请输入手机号/邮箱'
}, },
// //
reloadIndex() { reloadIndex() {
@ -160,45 +205,37 @@ export default {
util.local.set(Setting.tokenKey, this.token, Setting.tokenExpires) util.local.set(Setting.tokenKey, this.token, Setting.tokenExpires)
util.cookies.remove('serverLogin') util.cookies.remove('serverLogin')
this.reloadIndex() this.reloadIndex()
// true util.successMsg('登录成功')
this.$get(this.api.logNotification).then(res => { this.$router.replace('/station')
const history = this.$route.query.redirect
const redirect = res.notification ?
'/log' :
history ?
decodeURIComponent(history) :
'/station'
util.successMsg('登录成功')
this.$router.replace(redirect)
}).catch(res => {})
}, },
submitFormLogin() { // submit() { //
this.$refs.form.validate(valid => { this.$refs.form.validate(valid => {
if (valid) { if (valid) {
this.form.distinguish = Number(this.form.distinguish); this.form.distinguish = Number(this.form.distinguish);
this.$post(this.api.logins, this.form).then((res) => { this.$post(this.api.logins, this.form).then(({ status, data, message }) => {
if (res && res.status == 30001) { if (status == 30001) {
this.phoneVisible = true this.phoneVisible = true
this.getVerImg() this.getVerImg()
this.form.code = '' this.form.code = ''
} else if (res.status == 200) { } else if (status == 200) {
this.token = res.data.token const { token } = data
this.token = token
// //
axios.get(this.api.isClient, { axios.get(this.api.isClient, {
headers: { headers: {
token: res.data.token token
} }
}).then(res => { }).then(res => {
// //
if (res.data.customer) { if (data.customer) {
this.SET_CUSTOMERNAME(res.data.customerName) this.SET_CUSTOMERNAME(data.customerName)
this.selectVisible = true this.selectVisible = true
} else { } else {
this.setLogin() this.setLogin()
} }
}).catch(res => {}) }).catch(res => {})
} else { } else {
util.errorMsg(res.message) util.errorMsg(message)
} }
}).catch(res => { }).catch(res => {
this.getVerImg() this.getVerImg()
@ -213,10 +250,12 @@ export default {
if (val === 1) { if (val === 1) {
this.setLogin() this.setLogin()
} else { } else {
// 使
util.cookies.set('serverLogin', true, { util.cookies.set('serverLogin', true, {
expires: new Date(Date.now() + 15 * 60 * 1000) expires: new Date(Date.now() + 15 * 60 * 1000) // 15
}) })
this.reloadIndex() this.reloadIndex()
//
location.href = process.env.NODE_ENV === 'development' ? location.href = process.env.NODE_ENV === 'development' ?
'http://192.168.31.125:8081/#/redirect?auth=' + btoa(this.token) : 'http://192.168.31.125:8081/#/redirect?auth=' + btoa(this.token) :
`${location.origin}/admin/#/redirect?auth=${window.btoa(this.token)}` `${location.origin}/admin/#/redirect?auth=${window.btoa(this.token)}`
@ -287,103 +326,110 @@ export default {
.wrap { .wrap {
min-height: 100%; min-height: 100%;
background-color: #F3F6FA; background-color: #F3F6FA;
.login{ }
min-height: calc(100vh - 43px); .login{
padding-top: calc((100vh - 584px) / 2); min-height: calc(100vh - 43px);
background: url(../../../assets/img/shapes/shape1.png) (0 123px)/auto no-repeat, padding-top: calc((100vh - 584px) / 2);
url(../../../assets/img/shapes/shape2.png) (35px 238px)/auto no-repeat, background: url(../../../assets/img/shapes/shape1.png) (0 123px)/auto no-repeat,
url(../../../assets/img/shapes/shape3.png) (0 485px)/auto no-repeat, url(../../../assets/img/shapes/shape2.png) (35px 238px)/auto no-repeat,
url(../../../assets/img/shapes/shape4.png) (right 50%)/auto no-repeat, url(../../../assets/img/shapes/shape3.png) (0 485px)/auto no-repeat,
url(../../../assets/img/shapes/shape5.png) (right 80%)/auto no-repeat, url(../../../assets/img/shapes/shape4.png) (right 50%)/auto no-repeat,
url(../../../assets/img/shapes/shape6.png) (right bottom)/auto no-repeat; url(../../../assets/img/shapes/shape5.png) (right 80%)/auto no-repeat,
.form{ url(../../../assets/img/shapes/shape6.png) (right bottom)/auto no-repeat;
width: 436px; .form{
padding: 38px 38px 60px; width: 436px;
margin: 0 auto 0; padding: 38px 38px 60px;
border-radius: 6px; margin: 0 auto 0;
background-color: #fff; border-radius: 6px;
.title{ background-color: #fff;
margin-bottom: 25px; .title{
font-size: 26px; margin-bottom: 25px;
color: #0B1D30; font-size: 26px;
letter-spacing: 4px; color: #0B1D30;
} letter-spacing: 4px;
.tab{ }
display: flex; .tab{
align-items: center; display: flex;
margin-bottom: 24px; justify-content: space-between;
border-bottom: 2px solid #E1E6F2; align-items: center;
li{ margin-bottom: 24px;
padding: 18px 0; border-bottom: 2px solid #E1E6F2;
margin-bottom: -1px; li{
font-size: 18px; padding: 18px 0;
color: #555; margin-bottom: -1px;
cursor: pointer; font-size: 18px;
border-bottom: 4px solid transparent; color: #555;
&:first-child{ cursor: pointer;
margin-right: 50px; border-bottom: 4px solid transparent;
} &:last-child{
&.active{ margin-right: 0;
color: $main-color;; }
border-bottom-color: $main-color; &.active{
} color: $main-color;;
border-bottom-color: $main-color;
} }
} }
.label{ }
margin-bottom: 10px; .label{
color: #105CB2; margin-bottom: 10px;
} color: #105CB2;
/deep/.el-form-item{ }
margin-bottom: 20px; /deep/.el-form-item{
} margin-bottom: 20px;
/deep/.el-input__inner{ }
position: relative; /deep/.el-input__inner{
height: 52px; position: relative;
padding: 0 20px 0 34px; height: 52px;
line-height: 50px; padding: 0 20px 0 34px;
background-color: #FBFBFB; line-height: 50px;
border: 1px solid #E1E6F2; background-color: #FBFBFB;
border-radius: 4px !important; border: 1px solid #E1E6F2;
} border-radius: 4px !important;
.account,.password,.code{ }
z-index: 1; .el-select {
position: absolute; width: 100%;
top: 17px; }
left: 11px; label {
width: 18px; z-index: 1;
height: 18px; position: absolute;
background: url(../../../assets/img/login/account.png) 0 0/100% 100% no-repeat; top: 17px;
} left: 11px;
.password{ width: 18px;
top: 18px; height: 18px;
background-image: url(../../../assets/img/login/password.png); background: url(../../../assets/img/login/account.png) 0 0/100% 100% no-repeat;
} }
.code{ .school{
top: 18px; background-image: url(../../../assets/img/login/school.png);
background-image: url(../../../assets/img/login/code.png); }
} .password{
.ver-img{ top: 18px;
position: absolute; background-image: url(../../../assets/img/login/password.png);
top: 1px; }
right: 1px; .code{
} top: 18px;
/deep/.el-form-item__error{ background-image: url(../../../assets/img/login/code.png);
top: 105%; }
left: auto; .ver-img{
right: 0; position: absolute;
color: #FFA94E; top: 1px;
} right: 1px;
.submit{ }
width: 100%; /deep/.el-form-item__error{
height: 48px; top: 105%;
margin-top: 30px; left: auto;
line-height: 48px; right: 0;
padding: 0; color: #FFA94E;
font-size: 20px; }
background-color: $main-color; .submit{
border-radius: 4px; width: 100%;
border: 0; height: 48px;
} margin-top: 30px;
line-height: 48px;
padding: 0;
font-size: 20px;
background-color: $main-color;
border-radius: 4px;
border: 0;
} }
} }
} }
@ -400,12 +446,6 @@ export default {
} }
} }
} }
.tips {
margin: 0 0 10px 5px;
font-size: 14px;
text-align: center;
color: #666;
}
.port { .port {
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -439,6 +479,35 @@ export default {
/deep/.select-dia { /deep/.select-dia {
margin-top: calc((100vh - 383px) / 2) !important; margin-top: calc((100vh - 383px) / 2) !important;
} }
/deep/.user-dia {
.tips {
margin-bottom: 20px;
text-align: center;
color: #666;
}
.users {
li {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 15px;
margin-bottom: 10px;
line-height: 40px;
font-size: 14px;
background-color: #ebeef5;
cursor: pointer;
&:last-child {
margin-bottom: 0;
}
&:hover {
background-color: #d3e0ff;
}
i {
font-size: 16px;
}
}
}
}
@media (max-height: 680px) { @media (max-height: 680px) {
.wrap .login { .wrap .login {
padding: 40px 0; padding: 40px 0;

@ -63,6 +63,10 @@
></el-option> ></el-option>
</el-select> </el-select>
</li> </li>
<li>
<label>搜索</label>
<el-input placeholder="请输入考核名称" v-model="form.keyWord" clearable></el-input>
</li>
</ul> </ul>
</div> </div>
<div class="page"> <div class="page">
@ -164,6 +168,7 @@ export default {
listData: [], listData: [],
date: [], date: [],
form: { form: {
keyWord: '',
month: "", month: "",
startTime: "", startTime: "",
endTime: "", endTime: "",
@ -171,7 +176,6 @@ export default {
curriculumId: "", curriculumId: "",
classId: "" classId: ""
}, },
keyword: "",
dateList: [ dateList: [
{ {
id: "", id: "",
@ -237,7 +241,7 @@ export default {
} }
this.initData(); this.initData();
}, },
keyword: function(val) { 'form.keyWord': function(val) {
clearTimeout(this.searchTimer); clearTimeout(this.searchTimer);
this.searchTimer = setTimeout(() => { this.searchTimer = setTimeout(() => {
this.initData(); this.initData();
@ -380,8 +384,8 @@ export default {
}); });
}, },
getClassData() { getClassData() {
this.$post(this.api.myClassByStudent).then(res => { this.$post(this.api.myClassByStudent).then(({ data }) => {
this.classList = res.data; this.classList = data.filter(e => e)
}).catch(err => { }).catch(err => {
}); });
}, },

@ -4,68 +4,27 @@
<img width="450" src="@/assets/img/update.png" alt=""> <img width="450" src="@/assets/img/update.png" alt="">
<p>给用户带来更好的服务与体验是我们不断优化和迭代产品的动力</p> <p>给用户带来更好的服务与体验是我们不断优化和迭代产品的动力</p>
</div> </div>
<div class="timeline"> <log-list></log-list>
<div class="item" v-for="(item, i) in listData" :key="i">
<span class="date">{{ item.updateTime }}</span>
<div class="right">
<h6>{{ item.versionName }}</h6>
<img v-if="item.coverUrl" :src="item.coverUrl" alt="" class="cover">
<ul class="detail">
<li v-for="(item, i) in item.logContents" :key="i">
<p class="name"><img :src="require('@/assets/img/' + funcList.find(e => e.id === item.type).icon + '.png')" alt=""> {{ funcList.find(e => e.id === item.type).name }}</p>
<div class="val">
<p class="" v-for="(item, i) in item.content" :key="i">{{ item }}</p>
</div>
</li>
</ul>
</div>
</div>
</div>
</div> </div>
</template> </template>
<script> <script>
import Setting from '@/setting' import logList from '@/components/log'
export default { export default {
name: 'log', name: 'log',
data() { data() {
return { return {
platformList: Setting.platformList,
listData: [],
funcList: [
{
id: 0,
name: '新功能',
icon: 'func'
},
{
id: 1,
name: '修复',
icon: 'bug'
},
{
id: 2,
name: '优化',
icon: 'optimize'
}
]
} }
}, },
components: {
logList
},
mounted() { mounted() {
this.getData()
}, },
methods: { methods: {
getData() {
this.$get(`${this.api.platformLogList}?platformId=${Setting.platformId}&port=1&versionName=`).then(res => {
const { logList } = res
logList.map((e, i) => {
e.logContents.map(n => {
n.content = n.content.split('\n')
})
})
this.listData = logList
}).catch(res => {})
},
} }
}; };
</script> </script>
@ -84,12 +43,13 @@ export default {
color: #e9e9e9; color: #e9e9e9;
} }
} }
.timeline { }
display: flex;
flex-direction: column; /deep/.timeline {
width: 1000px; display: flex;
margin: 0 auto; flex-direction: column;
} width: 1000px;
margin: 0 auto;
.item { .item {
display: flex; display: flex;
justify-content: center; justify-content: center;

@ -280,7 +280,6 @@ export default {
}, },
goSystem() { // goSystem() { //
const id = this.systemIds const id = this.systemIds
let href = ''
let token = util.local.get(Setting.tokenKey); let token = util.local.get(Setting.tokenKey);
let roleId = this.roleId == 4 ? 0 : 1; let roleId = this.roleId == 4 ? 0 : 1;
let userName = window.btoa(encodeURIComponent(this.userName)); let userName = window.btoa(encodeURIComponent(this.userName));

@ -3,7 +3,6 @@ import util from "@/libs/util";
import { post, get, del, put } from "@/plugins/requests/index.js"; import { post, get, del, put } from "@/plugins/requests/index.js";
import api from "@/api"; import api from "@/api";
import addRoutes from "@/libs/route/addRoutes"; import addRoutes from "@/libs/route/addRoutes";
/** /**
* 用户信息 * 用户信息
* */ * */
@ -20,7 +19,8 @@ export default {
customerName: '', customerName: '',
schoolId: '', schoolId: '',
roleId: '', roleId: '',
dataTime: '' dataTime: '',
logView: false // 是否查询过日志状态,如果有,则不再调接口
}, },
mutations: { mutations: {
SET_INFO: (state, info) => { SET_INFO: (state, info) => {
@ -50,6 +50,9 @@ export default {
SET_ACTIVE_TAB: (state, activeTab) => { SET_ACTIVE_TAB: (state, activeTab) => {
state.activeTab = activeTab; state.activeTab = activeTab;
}, },
SET_LOG: (state) => {
state.logView = true
},
}, },
actions: { actions: {
login({ state, commit }, userInfo) { login({ state, commit }, userInfo) {

Loading…
Cancel
Save