diff --git a/package.json b/package.json index 3880b25..90a5181 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "mockjs2": "1.0.8", "moment": "^2.24.0", "nprogress": "^0.2.0", + "qs": "^6.10.3", "react-draft-wysiwyg": "^1.14.7", "store": "^2.0.12", "viser-vue": "^2.4.6", @@ -76,4 +77,4 @@ "webpack": "^4.44.2", "webpack-theme-color-replacer": "^1.3.12" } -} \ No newline at end of file +} diff --git a/src/utils/request.js b/src/utils/request.js index 5ba50c2..923d476 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -5,90 +5,98 @@ import notification from 'ant-design-vue/es/notification' import { VueAxios } from './axios' import { ACCESS_TOKEN } from '@/store/mutation-types' import router from '../router' +import qs from 'qs' const SUCCESS_CODE = 200 const INVALID_TOKEN_CODE = 401 const toast = (msg, description) => { - notification.error({ - message: msg, - description: description - }) + notification.error({ + message: msg, + description: description + }) } // 创建 axios 实例 const request = axios.create({ - // API 请求的默认前缀 - baseURL: process.env.VUE_APP_API_BASE_URL, - timeout: 60000 // 请求超时时间 + // API 请求的默认前缀 + baseURL: process.env.VUE_APP_API_BASE_URL, + timeout: 60000 // 请求超时时间 }) // 异常拦截处理器 const errorHandler = (error) => { - if (error.response) { - const data = error.response.data - // 从 localstorage 获取 token - const token = storage.get(ACCESS_TOKEN) - if (error.response.status === 403) { - toast('Forbidden:', data.msg) + if (error.response) { + const data = error.response.data + // 从 localstorage 获取 token + const token = storage.get(ACCESS_TOKEN) + if (error.response.status === 403) { + toast('Forbidden:', data.msg) + } + if (error.response.status === 401 && !(data.result && data.result.isLogin)) { + toast('Unauthorized:', 'Authorization verification failed') + if (token) { + store.dispatch('Logout').then(() => { + setTimeout(() => { + window.location.reload() + }, 1500) + }) + } + } } - if (error.response.status === 401 && !(data.result && data.result.isLogin)) { - toast('Unauthorized:', 'Authorization verification failed') - if (token) { - store.dispatch('Logout').then(() => { - setTimeout(() => { - window.location.reload() - }, 1500) - }) - } - } - } - return Promise.reject(error) + return Promise.reject(error) } // request interceptor request.interceptors.request.use(config => { - const token = storage.get(ACCESS_TOKEN) - // 由于登录接口待联调,token使用默认值 - // const token = 'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjY0MjM0YmY0LTkxOWEtNDFkMS05MzZlLTMwZDU3NDhkYmVjZCJ9.J15_FhVqcm_GsNIS2BCEYf26sWQQ4pMSTedV5eKauZT8-f6480Mx1s5ZdqWdEOlORnkKSc5pUioCngbCopr9cQ' - // 如果 token 存在,让每个请求携带自定义 token 请根据实际情况自行修改 - if (token) { - config.headers[ACCESS_TOKEN] = token - } - if (config.method === 'post') { - if (!config.data) { - config.data = {} + const token = storage.get(ACCESS_TOKEN) + // 由于登录接口待联调,token使用默认值 + // const token = 'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjY0MjM0YmY0LTkxOWEtNDFkMS05MzZlLTMwZDU3NDhkYmVjZCJ9.J15_FhVqcm_GsNIS2BCEYf26sWQQ4pMSTedV5eKauZT8-f6480Mx1s5ZdqWdEOlORnkKSc5pUioCngbCopr9cQ' + // 如果 token 存在,让每个请求携带自定义 token 请根据实际情况自行修改 + if (token) { + config.headers[ACCESS_TOKEN] = token } - } - return config + if (config.method === 'post') { + if (!config.data) { + config.data = {} + } + } + // get方法传递数组的处理(重点代码) + if (config.method === 'get') { + config.paramsSerializer = function(params) { + return qs.stringify(params, { arrayFormat: 'repeat' }) + } + } + + return config }, errorHandler) // response interceptor request.interceptors.response.use((response) => { - if (response.status === 200 && response.data.code === SUCCESS_CODE) { - return Promise.resolve(response.data) - } else if (response.data && response.data.code === INVALID_TOKEN_CODE) { - toast(response.data.msg) - store.dispatch('Logout').then(() => { - router.push({ name: 'login' }) - }) - return Promise.reject(response) - } else { - if (response.data && response.data.msg) toast(response.data.msg) - return Promise.reject(response) - } + if (response.status === 200 && response.data.code === SUCCESS_CODE) { + return Promise.resolve(response.data) + } else if (response.data && response.data.code === INVALID_TOKEN_CODE) { + toast(response.data.msg) + store.dispatch('Logout').then(() => { + router.push({ name: 'login' }) + }) + return Promise.reject(response) + } else { + if (response.data && response.data.msg) toast(response.data.msg) + return Promise.reject(response) + } }, errorHandler) const installer = { - vm: {}, - install(Vue) { - Vue.use(VueAxios, request) - } + vm: {}, + install(Vue) { + Vue.use(VueAxios, request) + } } export default request export { - installer as VueAxios, - request as axios -} + installer as VueAxios, + request as axios +} \ No newline at end of file diff --git a/src/views/project/ProjectList.vue b/src/views/project/ProjectList.vue index bb1dab6..4f3572a 100644 --- a/src/views/project/ProjectList.vue +++ b/src/views/project/ProjectList.vue @@ -40,19 +40,19 @@ @@ -111,6 +111,7 @@ export default { }, { title: '项目状态', + key: 'status', dataIndex: 'status', customRender: (text, record, index) => { //项目状态 1-未发布 2-未开始 3-进行中 4-已完成 @@ -124,7 +125,7 @@ export default { return '进行中' } if (text == 4) { - return '已完成' + return '已结束' } }, }, @@ -133,6 +134,7 @@ export default { { title: '操作', width: 200, + key: 'action', align: 'center', scopedSlots: { customRender: 'action' }, }, @@ -204,6 +206,7 @@ export default { }, //变更类型 changeType(path) { + console.log('变更路由:',path) var arr = [] if (path) { arr = path.split('/') @@ -212,6 +215,23 @@ export default { } let str = arr[arr.length - 1] this.queryParam.type = str + + /** 控制表格列的显示 */ + if (str === 'sys' || str === 'model') { + let c = this.columns; + // console.log('columns-------c', c) + // let d = c.filter(item => {return item.key != 'startDate'}) + // let e = d.filter(item => {return item.key != 'personNum'}) + // let f = e.filter(item => {return item.key != 'status'}) + + c = c.filter(item => {return item.key != 'startDate'}) + c = c.filter(item => {return item.key != 'personNum'}) + c = c.filter(item => {return item.key != 'status'}) + + this.columns = c + console.log('columns-------', this.columns) + } + //系统推荐权限 str === 'sys' ? this.power.add = 'project:sys:add' : this.power.add = 'project:add' str === 'sys' ? this.power.del = 'project:sys:del' : this.power.del = 'project:del' diff --git a/src/views/project/ProjectStepForm.vue b/src/views/project/ProjectStepForm.vue index 061d3ef..5326d2d 100644 --- a/src/views/project/ProjectStepForm.vue +++ b/src/views/project/ProjectStepForm.vue @@ -1,20 +1,22 @@ diff --git a/src/views/project/form/ProjectTestPaperFormationStrategy.vue b/src/views/project/form/ProjectTestPaperFormationStrategy.vue index 54b7165..8eddeb1 100644 --- a/src/views/project/form/ProjectTestPaperFormationStrategy.vue +++ b/src/views/project/form/ProjectTestPaperFormationStrategy.vue @@ -1,6 +1,6 @@