fix: select2添加axios参数无权限时不弹出提示

This commit is contained in:
“huailei000” 2022-03-09 21:21:09 +08:00 committed by 老广
parent 2b984cb456
commit 1bf3371a00
3 changed files with 41 additions and 9 deletions

View File

@ -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
}

View File

@ -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)
}

View File

@ -81,7 +81,10 @@ export default {
hasRefresh: true,
hasSearch: true,
hasMoreActions: false,
createRoute: 'CommandFilterCreate'
createRoute: 'CommandFilterCreate',
canCreate: () => {
return this.$hasPerm('assets.add_commandfilter')
}
}
}
},