Commit 9024780f by yuwei

2.0.0项目初始化

parent c8d517e5
import axios from 'axios' import axios from 'axios'
import { Loading, Message } from 'element-ui' import { Loading, Message } from 'element-ui'
import storage from '@/utils/storage' import storage from '@/utils/storage'
import router from '@/router'
import store from '@/store'
const instance = axios.create({ const instance = axios.create({
baseURL: process.env.VUE_APP_BASE_API, baseURL: process.env.VUE_APP_BASE_API,
...@@ -34,15 +36,8 @@ instance.interceptors.response.use( ...@@ -34,15 +36,8 @@ instance.interceptors.response.use(
response => { response => {
loadingInstance.close() loadingInstance.close()
const code = response.data.code || 200 const code = response.data.code || 200
if (code === 401) { console.log('code:' + code)
// 重新登陆 if (code === 500) {
console.log('重新登陆')
Message.warning('重新登陆')
} else if (code === 403) {
// 无权限
console.log('无权限')
Message.warning('无权限')
} else if (code === 500) {
// 系统错误 // 系统错误
Message.error(response.data.msg || '系统错误') Message.error(response.data.msg || '系统错误')
return Promise.reject(new Error(response.data.msg)) return Promise.reject(new Error(response.data.msg))
...@@ -52,8 +47,46 @@ instance.interceptors.response.use( ...@@ -52,8 +47,46 @@ instance.interceptors.response.use(
}, },
error => { error => {
loadingInstance.close() loadingInstance.close()
Message.error(error.message) console.log('error.response.status:' + error.response.status)
return Promise.reject(error) if (error.response.status) {
switch (error.response.status) {
// 401: 未登录
// 未登录则跳转登录页面,并携带当前页面的路径
// 在登录成功后返回当前页面,这一步需要在登录页操作。
case 401:
router.replace({
path: '/login',
query: { redirect: router.currentRoute.fullPath }
})
break
// 403 token过期
// 登录过期对用户进行提示
// 清除本地token和清空vuex中token对象
// 跳转登录页面
case 403:
Message.error('登录过期,请重新登录')
// 清除token
store.dispatch('user/resetToken')
// 跳转登录页面,并将要浏览的页面fullPath传过去,登录成功后跳转需要访问的页面
setTimeout(() => {
router.replace({
path: '/login',
query: {
redirect: router.currentRoute.fullPath
}
})
}, 1000)
break
// 404请求不存在
case 404:
Message.error('网络请求不存在')
break
// 其他错误,直接抛出错误提示
default:
Message.error(error.response.data.message)
}
}
return Promise.reject(error.response)
} }
) )
......
...@@ -65,7 +65,8 @@ export default { ...@@ -65,7 +65,8 @@ export default {
showAdd: false, showAdd: false,
showEdit: false, showEdit: false,
showDetail: false, showDetail: false,
showLogList: false showLogList: false,
showLogDetail: false
}, },
// 保存按钮 // 保存按钮
loadingOptions: { loadingOptions: {
......
...@@ -64,7 +64,8 @@ export default { ...@@ -64,7 +64,8 @@ export default {
showAdd: false, showAdd: false,
showEdit: false, showEdit: false,
showDetail: false, showDetail: false,
showLogList: false showLogList: false,
showLogDetail: false
}, },
// 表单参数 // 表单参数
form: {}, form: {},
......
...@@ -65,7 +65,8 @@ export default { ...@@ -65,7 +65,8 @@ export default {
showAdd: false, showAdd: false,
showEdit: false, showEdit: false,
showDetail: false, showDetail: false,
showLogList: false showLogList: false,
showLogDetail: false
}, },
// 保存按钮 // 保存按钮
loadingOptions: { loadingOptions: {
......
...@@ -226,7 +226,8 @@ export default { ...@@ -226,7 +226,8 @@ export default {
showAdd: false, showAdd: false,
showEdit: false, showEdit: false,
showDetail: false, showDetail: false,
showLogList: false showLogList: false,
showLogDetail: false
}, },
// 遮罩层 // 遮罩层
loading: true, loading: true,
......
...@@ -15,6 +15,9 @@ ...@@ -15,6 +15,9 @@
<transition name="el-zoom-in-center"> <transition name="el-zoom-in-center">
<job-log-list v-if="options.showLogList" :data="options.data" @showCard="showCard"></job-log-list> <job-log-list v-if="options.showLogList" :data="options.data" @showCard="showCard"></job-log-list>
</transition> </transition>
<transition name="el-zoom-in-bottom">
<job-log-detail v-if="options.showLogDetail" :data="options.data" @showCard="showCard"></job-log-detail>
</transition>
</div> </div>
</template> </template>
...@@ -23,11 +26,12 @@ import JobList from './JobList' ...@@ -23,11 +26,12 @@ import JobList from './JobList'
import JobAdd from './JobAdd' import JobAdd from './JobAdd'
import JobEdit from './JobEdit' import JobEdit from './JobEdit'
import JobDetail from './JobDetail' import JobDetail from './JobDetail'
import JobLogList from './log/JobLogList' import JobLogList from '../log/JobLogList'
import JobLogDetail from '../log/JobLogDetail'
export default { export default {
name: 'Job', name: 'Job',
components: { JobList, JobAdd, JobEdit, JobDetail, JobLogList }, components: { JobList, JobAdd, JobEdit, JobDetail, JobLogList, JobLogDetail },
data () { data () {
return { return {
options: { options: {
...@@ -36,7 +40,8 @@ export default { ...@@ -36,7 +40,8 @@ export default {
showAdd: false, showAdd: false,
showEdit: false, showEdit: false,
showDetail: false, showDetail: false,
showLogList: false showLogList: false,
showLogDetail: false
} }
} }
}, },
......
<template>
<div>
<el-card class="box-card" shadow="always" :body-style="{ height: bodyHeight }" style="overflow-y: auto;">
<div slot="header" class="clearfix">
<span>{{ title }}</span>
<el-button-group style="float: right;">
<el-button size="mini" icon="el-icon-back" round @click="showCard">返回</el-button>
</el-button-group>
</div>
<el-form ref="form" :model="form" label-width="80px" disabled>
<el-form-item label="信息记录" prop="msg">
<el-input v-model="form.msg" placeholder="请输入信息记录" />
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-input v-model="form.createTime" placeholder="请输入创建时间" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.id"
:label="dict.itemText"
>{{dict.itemValue}}</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
import { getLog } from '@/api/scheduler/log'
export default {
name: 'JobDetail',
props: {
data: {
type: Object,
default: function () {
return {}
}
}
},
data () {
return {
bodyHeight: document.body.offsetHeight - 130 + 'px',
title: '任务日志详情',
// 展示切换
showOptions: {
data: {},
showList: true,
showAdd: false,
showEdit: false,
showDetail: false,
showLogList: false,
showLogDetail: false
},
// 表单参数
form: {},
// 状态数据字典
statusOptions: []
}
},
created () {
console.log('id:' + this.data.id)
this.getDicts('sys_common_status').then(response => {
if (response.success) {
this.statusOptions = response.data
}
})
this.getLog(this.data.id)
},
methods: {
showCard () {
this.$emit('showCard', this.showOptions)
},
/** 获取详情 */
getLog: function (id) {
getLog(id).then(response => {
if (response.success) {
this.form = response.data
}
})
}
}
}
</script>
<style lang="scss" scoped>
</style>
...@@ -22,6 +22,14 @@ ...@@ -22,6 +22,14 @@
<el-col :span="12"> <el-col :span="12">
<el-button-group> <el-button-group>
<el-button <el-button
type="info"
icon="el-icon-view"
size="mini"
:disabled="single"
@click="handleDetail"
v-hasPerm="['scheduler:log:detail']"
>详情</el-button>
<el-button
type="danger" type="danger"
icon="el-icon-delete" icon="el-icon-delete"
size="mini" size="mini"
...@@ -102,6 +110,13 @@ ...@@ -102,6 +110,13 @@
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-view"
@click="handleDetail(scope.row)"
v-hasPerm="['scheduler:log:detail']"
>详情</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete" icon="el-icon-delete"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPerm="['scheduler:log:remove']" v-hasPerm="['scheduler:log:remove']"
...@@ -131,7 +146,7 @@ export default { ...@@ -131,7 +146,7 @@ export default {
props: { props: {
data: { data: {
type: Object, type: Object,
default: function() { default: function () {
return {} return {}
} }
} }
...@@ -147,7 +162,8 @@ export default { ...@@ -147,7 +162,8 @@ export default {
showAdd: false, showAdd: false,
showEdit: false, showEdit: false,
showDetail: false, showDetail: false,
showLogList: false showLogList: false,
showLogDetail: false
}, },
// 遮罩层 // 遮罩层
loading: true, loading: true,
...@@ -240,6 +256,17 @@ export default { ...@@ -240,6 +256,17 @@ export default {
this.single = selection.length !== 1 this.single = selection.length !== 1
this.multiple = !selection.length this.multiple = !selection.length
}, },
/** 详情按钮操作 */
handleDetail (row) {
this.showOptions.data.id = row.id || this.ids[0]
this.showOptions.showList = false
this.showOptions.showAdd = false
this.showOptions.showEdit = false
this.showOptions.showDetail = false
this.showOptions.showLogList = false
this.showOptions.showLogDetail = true
this.$emit('showCard', this.showOptions)
},
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete (row) { handleDelete (row) {
this.$confirm('选中数据将被永久删除, 是否继续?', '提示', { this.$confirm('选中数据将被永久删除, 是否继续?', '提示', {
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
ref="menu" ref="menu"
node-key="id" node-key="id"
empty-text="加载中,请稍后" empty-text="加载中,请稍后"
:check-strictly="menuCheckstrictly" :check-strictly="menuCheckStrictly"
:props="menuDefaultProps" :props="menuDefaultProps"
></el-tree> ></el-tree>
</el-form-item> </el-form-item>
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
ref="dept" ref="dept"
node-key="id" node-key="id"
empty-text="加载中,请稍后" empty-text="加载中,请稍后"
:check-strictly="deptCheckstrictly" :check-strictly="deptCheckStrictly"
:props="deptDefaultProps" :props="deptDefaultProps"
></el-tree> ></el-tree>
</el-form-item> </el-form-item>
...@@ -116,8 +116,8 @@ export default { ...@@ -116,8 +116,8 @@ export default {
children: 'children', children: 'children',
label: 'deptName' label: 'deptName'
}, },
menuCheckstrictly: false, menuCheckStrictly: false,
deptCheckstrictly: false deptCheckStrictly: false
} }
}, },
created () { created () {
...@@ -191,12 +191,20 @@ export default { ...@@ -191,12 +191,20 @@ export default {
this.form = response.data this.form = response.data
let menuCheckedKeys = response.data.menus.map(menu => menu.id) let menuCheckedKeys = response.data.menus.map(menu => menu.id)
let deptCheckedKeys = response.data.depts.map(dept => dept.id) let deptCheckedKeys = response.data.depts.map(dept => dept.id)
this.menuCheckstrictly = true if (menuCheckedKeys && menuCheckedKeys.length > 0) {
this.deptCheckstrictly = true this.menuCheckStrictly = true
this.$refs.menu.setCheckedKeys(menuCheckedKeys) this.$nextTick(() => {
this.$refs.dept.setCheckedKeys(deptCheckedKeys) this.$refs.menu.setCheckedKeys(menuCheckedKeys)
this.menuCheckstrictly = false this.menuCheckStrictly = false
this.deptCheckstrictly = false })
}
if (deptCheckedKeys && deptCheckedKeys.length > 0) {
this.deptCheckStrictly = true
this.$nextTick(() => {
this.$refs.dept.setCheckedKeys(deptCheckedKeys)
this.deptCheckStrictly = false
})
}
} }
}) })
} }
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
ref="menu" ref="menu"
node-key="id" node-key="id"
empty-text="加载中,请稍后" empty-text="加载中,请稍后"
:check-strictly="menuCheckstrictly" :check-strictly="menuCheckStrictly"
:props="menuDefaultProps" :props="menuDefaultProps"
></el-tree> ></el-tree>
</el-form-item> </el-form-item>
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
ref="dept" ref="dept"
node-key="id" node-key="id"
empty-text="加载中,请稍后" empty-text="加载中,请稍后"
:check-strictly="deptCheckstrictly" :check-strictly="deptCheckStrictly"
:props="deptDefaultProps" :props="deptDefaultProps"
></el-tree> ></el-tree>
</el-form-item> </el-form-item>
...@@ -132,8 +132,8 @@ export default { ...@@ -132,8 +132,8 @@ export default {
children: 'children', children: 'children',
label: 'deptName' label: 'deptName'
}, },
menuCheckstrictly: false, menuCheckStrictly: false,
deptCheckstrictly: false deptCheckStrictly: false
} }
}, },
created () { created () {
...@@ -207,12 +207,20 @@ export default { ...@@ -207,12 +207,20 @@ export default {
this.form = response.data this.form = response.data
let menuCheckedKeys = response.data.menus.map(menu => menu.id) let menuCheckedKeys = response.data.menus.map(menu => menu.id)
let deptCheckedKeys = response.data.depts.map(dept => dept.id) let deptCheckedKeys = response.data.depts.map(dept => dept.id)
this.menuCheckstrictly = true if (menuCheckedKeys && menuCheckedKeys.length > 0) {
this.deptCheckstrictly = true this.menuCheckStrictly = true
this.$refs.menu.setCheckedKeys(menuCheckedKeys) this.$nextTick(() => {
this.$refs.dept.setCheckedKeys(deptCheckedKeys) this.$refs.menu.setCheckedKeys(menuCheckedKeys)
this.menuCheckstrictly = false this.menuCheckStrictly = false
this.deptCheckstrictly = false })
}
if (deptCheckedKeys && deptCheckedKeys.length > 0) {
this.deptCheckStrictly = true
this.$nextTick(() => {
this.$refs.dept.setCheckedKeys(deptCheckedKeys)
this.deptCheckStrictly = false
})
}
} }
}) })
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment