Merge remote-tracking branch 'origin/master'

This commit is contained in:
haozq 2024-04-16 18:18:46 +08:00
commit da76b60c7a
11 changed files with 123 additions and 45 deletions

View File

@ -83,8 +83,15 @@ export function getLogSize(data) {
})
}
//添加异常Ip日志
export function addLogs(data) {
return request({
url: '/system/sys/sysLog/addLogs',
method: 'post',
data:data
})
}

View File

@ -72,3 +72,11 @@ export function editPwd(params) {
data: params
})
}
export function logWarn(params) {
return request({
url: '/system/sys/sysLog/logWarn',
method: 'post',
data: params
})
}

View File

@ -5,6 +5,7 @@ import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
import { getToken } from '@/utils/auth' // get token from cookie
import getPageTitle from '@/utils/get-page-title'
import {addLogs} from '@/api/log/log'
NProgress.configure({ showSpinner: false }) // NProgress Configuration
@ -15,13 +16,9 @@ router.beforeEach(async(to, from, next) => {
NProgress.start()
// set page title
document.title = getPageTitle(to.meta.title)
// determine whether the user has logged in
const hasToken = getToken()
// if (to.path === '/sso') {
// next()
// } else {
// determine whether the user has logged in
const hasToken = getToken()
if (hasToken) {
if (to.path === '/login') {
// if is logged in, redirect to the home page
@ -39,28 +36,6 @@ router.beforeEach(async(to, from, next) => {
router.addRoutes(accessRoutes)
next({ ...to, replace: true })
}
// try {
// console.log(11111111)
// // get user info
// // note: roles must be a object array! such as: ['admin'] or ,['developer','editor']
// // const { roles } = await store.dispatch('user/getInfo')
// // generate accessible routes map based on roles
// const accessRoutes = await store.dispatch('permission/generateRoutes', roles)
// // const accessRoutes = []
// // dynamically add accessible routes
// router.addRoutes(accessRoutes)
// // hack method to ensure that addRoutes is complete
// // set the replace: true, so the navigation will not leave a history record
// next({ ...to, replace: true })
// } catch (error) {
// // remove token and go to login page to re-login
// await store.dispatch('user/resetToken')
// Message.error(error || 'Has Error')
// next(`/login?redirect=${to.path}`)
// NProgress.done()
// }
// }
}
} else {
/* has no token*/
@ -74,7 +49,18 @@ router.beforeEach(async(to, from, next) => {
NProgress.done()
}
}
// }
if (to.path === '/404') {
console.log(to.redirectedFrom)
let param = {
operUri: to.redirectedFrom
}
addLogs(param).then((response) => {
// if(response)
})
next()
}
})
router.afterEach(() => {

View File

@ -40,6 +40,7 @@ const actions = {
setUs(data.us)// 存储用户信息到缓存
commit('SET_ROLES', data.us.role)
commit('SET_NAME', data.us.userName)
sessionStorage.setItem('nickName',JSON.parse(data.us).nickName)
resolve()
}).catch(error => {
reject(error)

View File

@ -34,7 +34,7 @@ const service = axios.create({
// request拦截器
service.interceptors.request.use(config => {
// 是否需要加密
let aqEnnable = true;
let aqEnnable = false;
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
// 是否需要防止数据重复提交

View File

@ -28,7 +28,7 @@ export default {
message() {
return '找不到网页!'
}
}
},
}
</script>

View File

@ -2,19 +2,85 @@
<div class="content">
<!-- <h3>{{ content }}</h3> -->
<img src="../../assets/welcome.png" alt="" style="width: 96%;height: 100%;">
<!-- 编辑模态框-->
<el-dialog :title="title1" :visible.sync="dialogVisible1" width="520px">
<el-form ref="dataForm" label-position="right" label-width="110px" >
<el-form-item label="告警内容:" prop="err">
<el-input type="textarea" v-model="formData.err" placeholder="告警内容" :maxlength="250" :readonly="true"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible1 = false" type="primary">
确定
</el-button>
</div>
</el-dialog>
<el-dialog :title="title2" :visible.sync="dialogVisible2" width="520px">
<el-form ref="dataForm" label-position="right" label-width="110px" >
<el-form-item label="告警内容:" prop="warnError">
<el-input type="textarea" v-model="formData.warnError" placeholder="告警类型" :maxlength="250" :readonly="true"/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible2 = false" type="primary">
确定
</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { logWarn } from '@/api/user'
export default {
data() {
return {
content: '欢迎进入智慧工地系统'
content: '欢迎进入智慧工地系统',
title1:'',
title2:'',
dialogVisible1:false,
dialogVisible2:false,
formData:{},
}
},
created() {
mounted() {
// console.log(this.$route.query.formLogin)
if(this.$route.query.formLogin=='true'){
this.checkAlarm()
}
},
methods: {
checkAlarm(){
let nickName = sessionStorage.getItem('nickName')
// console.log(nickName)
if(nickName=='sjrz'){
logWarn().then((response) => {
if(response.code==200){
this.formData = response.data;
if(this.formData.logWarn=="1"){
this.dialogVisible1 = true;
this.title1 = '异常告警'
}
if(this.formData.warnType=='1'){
this.dialogVisible2 = true;
this.title2 = '日志容量告警'
}
}
})
}
},
handleClosedModal(){
}
}
}
</script>

View File

@ -27,9 +27,9 @@
<el-option v-for="item in Object.keys(typeList)" :key="item" :value="typeList[item]" :label="typeList[item]" />
</el-select>
<!-- <el-select v-model="listQuery.logSort" clearable filterable style="width: 200px" class="filter-item ml-20" placeholder="请选择" >
<el-select v-model="listQuery.logSort" clearable filterable style="width: 200px" class="filter-item ml-20" placeholder="请选择" >
<el-option v-for="item in timeList" :key="item.id" :label="item.name" :value="item.id" />
</el-select> -->
</el-select>
<el-select v-model="listQuery.logDesc" clearable filterable style="width: 200px" class="filter-item ml-20" placeholder="请选择" >
<el-option v-for="item in sortList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
@ -75,9 +75,10 @@
</el-table-column>
<el-table-column label="异常类型" align="center" prop="errType" />
<el-table-column label="异常原因" align="center" prop="failureReason"/>
<el-table-column label="异常原因" align="center" prop="failureReason"/>
<el-table-column label="异常等级" align="center" prop="fruit"/>
<!-- <el-table-column label="操作类型" align="center" prop="operType" />
<el-table-column label="异常等级" align="center" prop="grade"/>
<el-table-column label="事件结果" align="center" prop="fruit"/>
<el-table-column label="操作类型" align="center" prop="operType" />
<!--
<el-table-column label="操作详情" align="center" prop="operateDetail" />
<el-table-column label="操作结果" align="center" prop="errLevel">
@ -138,7 +139,7 @@ export default {
listLoading: false,
tableHeight: 650,
typeList: typeList,
timeList:[{id:1,name:'时间'},{id:2,name:'操作人'},{id:3,name:'操作模块'},{id:4,name:'ip'},],
timeList:[{id:1,name:'时间'},{id:2,name:'操作人'},{id:4,name:'ip'},{id:5,name:'异常等级'}],
sortList:[{id:1,name:'倒序'},{id:2,name:'升序'}],
listQuery: {
pageNum: 1,

View File

@ -91,8 +91,15 @@
// this.sumNum
// this.successNum
// this.failedNum
// this.echartData = response.data;
// this.getInitData()
this.echartData = response.data.list.map((item,index)=>{
let obj = {
name:item,
value:response.data.nums[index]
}
return obj
});
console.log(this.echartData)
this.getInitData()
})
},
//
@ -121,7 +128,7 @@
radius: "68%",
center: ["50%", "50%"],
clockwise: false,
data: echartData,
data: this.echartData,
label: {
normal: {
textStyle: {

View File

@ -158,6 +158,7 @@ export default {
this.loading = true
this.$store.dispatch('user/login', this.loginForm)
.then(() => {
this.otherQuery.formLogin=true;
this.$router.push({ path: this.redirect || '/', query: this.otherQuery })
this.loading = false
})

View File

@ -109,6 +109,7 @@
:props="defaultProps"
default-expand-all
highlight-current
check-strictly
/>
<div slot="footer" class="dialog-footer">
<!-- <el-button @click="dialogFormVisible2 = false"> 关闭 </el-button> -->