From 1bf3371a0074182f7a5a6237e2b8c3fa616501e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Chuailei000=E2=80=9D?= <2280131253@qq.com> Date: Wed, 9 Mar 2022 21:21:09 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20select2=E6=B7=BB=E5=8A=A0axios=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E6=97=A0=E6=9D=83=E9=99=90=E6=97=B6=E4=B8=8D=E5=BC=B9?= =?UTF-8?q?=E5=87=BA=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/FormFields/Select2.vue | 33 +++++++++++++++---- src/components/RelationCard/index.vue | 12 +++++-- .../CommandFilter/CommandFilterList.vue | 5 ++- 3 files changed, 41 insertions(+), 9 deletions(-) diff --git a/src/components/FormFields/Select2.vue b/src/components/FormFields/Select2.vue index 4b88d0bd6..7024368d2 100644 --- a/src/components/FormFields/Select2.vue +++ b/src/components/FormFields/Select2.vue @@ -88,6 +88,7 @@ export default { } }, data() { + const vm = this const defaultPageSize = 10 const defaultParams = { search: '', @@ -95,7 +96,18 @@ export default { hasMore: true, pageSize: defaultPageSize } + // 设置axios全局报错提示不显示 + const validateStatus = (status) => { + if (status === 403) { + setTimeout(() => { + vm.initialized = true + }, 300) + return 200 + } + return status + } return { + validateStatus, loading: false, initialized: false, defaultParams: _.cloneDeep(defaultParams), @@ -150,7 +162,7 @@ export default { results = data total = data.length } else if (typeof data === 'object') { - results = data.results + results = data?.results || [] more = !!data.next total = data.count } @@ -163,7 +175,8 @@ export default { pageSize: defaultPageSize, makeParams: defaultMakeParams, transformOption: defaultTransformOption, - processResults: defaultProcessResults + processResults: defaultProcessResults, + validateStatus: this.validateStatus } return Object.assign(defaultAjax, this.ajax, this.url ? { url: this.url } : {}) } @@ -231,9 +244,13 @@ export default { this.getOptions() }, async getInitialOptions() { + const { url, processResults, validateStatus } = this.iAjax const params = this.safeMakeParams(this.params) - let data = await this.$axios.get(this.iAjax.url, { params: params }) - data = this.iAjax.processResults.bind(this)(data) + let data = await this.$axios.get(url, { + params, + validateStatus + }) + data = processResults.bind(this)(data) data.results.forEach((v) => { this.initialOptions.push(v) if (this.optionsValues.indexOf(v.value) === -1) { @@ -251,9 +268,13 @@ export default { } }, async getOptions() { + const { url, processResults, validateStatus } = this.iAjax const params = this.safeMakeParams(this.params) - const resp = await this.$axios.get(this.iAjax.url, { params: params }) - const data = this.iAjax.processResults.bind(this)(resp) + const resp = await this.$axios.get(url, { + params, + validateStatus + }) + const data = processResults.bind(this)(resp) if (!data.pagination) { this.params.hasMore = false } diff --git a/src/components/RelationCard/index.vue b/src/components/RelationCard/index.vue index cbdfefe8f..a461d1143 100644 --- a/src/components/RelationCard/index.vue +++ b/src/components/RelationCard/index.vue @@ -217,9 +217,17 @@ export default { async loadHasObjects() { this.$log.debug('Start loadHasObject: ', this.params) const params = this.safeMakeParams(this.params) - let data = await this.$axios.get(this.iAjax.url, { params: params }) + let data = await this.$axios.get(this.iAjax.url, { + params: params, + validateStatus: (status) => { + if (status === 403) { + return 200 + } + return status + } + }) data = this.iAjax.processResults.bind(this)(data) - data.results.forEach((v) => { + data.results && data.results.forEach((v) => { if (!this.hasObjects.find((item) => item.value === v.value)) { this.iHasObjects.push(v) } diff --git a/src/views/assets/CommandFilter/CommandFilterList.vue b/src/views/assets/CommandFilter/CommandFilterList.vue index 7d5de8723..098af816f 100644 --- a/src/views/assets/CommandFilter/CommandFilterList.vue +++ b/src/views/assets/CommandFilter/CommandFilterList.vue @@ -81,7 +81,10 @@ export default { hasRefresh: true, hasSearch: true, hasMoreActions: false, - createRoute: 'CommandFilterCreate' + createRoute: 'CommandFilterCreate', + canCreate: () => { + return this.$hasPerm('assets.add_commandfilter') + } } } },