業(yè)務場景:點擊 查詢按鈕 不同的查詢條件有不同查詢接口。當然每個接口都有自己固定的參數(shù)形式。
用if 判斷確實會讓代碼的核心邏輯體現(xiàn)的不是很突出。個人認為在處理邏輯 只需要把核心邏輯拉出來即可。然后需要過濾的數(shù)據(jù)或者判斷均可用方法來進行替代,這樣后面比較容易維護。
*** 核心 Map (map 鍵值對 值value可以是任意模式的,這樣可以任意拼接成想要的)***
方式 :通過get 方法得出可能性情況
let request_param = new URLSearchParams()
const query_url = new Map([
['0_0_0', {type: '0', url: '', msg: '請選擇查詢項..'}],
['0_0_1', {
type: '1', url: '/record/search/amount', msg: '...', params_get: (value) => {
request_param.append('start', value.startAmount)
request_param.append('end', value.endAmount)
}
}],
['0_1_0', {
type: '1', url: '/record/search/date', msg: '', params_get: (value) => {
request_param.append('start', value.startDate)
request_param.append('end', value.endDate)
}
}],
['0_1_1', {
type: '1', url: '/record/search/date-amount', params_get: ({startDate, endDate, startAmount, endAmount}) => {
request_param.append('startDate', startDate)
request_param.append('endDate', endDate)
request_param.append('startAmount', startAmount)
request_param.append('endAmount', endAmount)
}
}],
['1_0_0', {
type: '1', url: '/record/search/uid', params_get: ({uid}) => {
request_param.append('uid', uid)
}
}],
['1_1_0', {type: '0', url: '', msg: '身份證只能單獨查詢哦 ..'}],
['1_0_1', {type: '0', url: '', msg: '身份證只能單獨查詢哦 ..'}],
])
/* 判斷 type 類型 */
judge_Null () {
let index, index1, index2, url, params = {}
if (this.sfz_Query === '') {
index = 0
} else {
index = 1
params.uid = this.sfz_Query
}
if (this.time_sot.length === 0) {
index1 = 0
} else {
index1 = 1
params.startDate = this.axios_packaged.formatDate(this.time_sot[0], 'yyyy-MM-dd')
params.endDate = this.axios_packaged.formatDate(this.time_sot[1], 'yyyy-MM-dd')
}
if (this.money_Query === '') {
index2 = 0
} else {
index2 = 1
params.startAmount = 0
params.endAmount = +this.money_Query
}
url = `${index}_${index1}_${index2}`
return {url: query_url.get(url), value: params}
}
let {url, value} = this.judge_Null()
if (url.type === '0') {
this.$message({
type: 'warning',
message: `${url.msg}`
})
} else {
/* 參數(shù) 覆蓋 */
request_param = new URLSearchParams()
let request_url = url.url
url.params_get(value)
request_param.append('page', '1')
/* 暫時設置 5條 */
request_param.append('size', '5')
this.$axios.post(`/api${request_url}`, request_param).then((result) => {
let {code, data} = result.data
if (code === 200) {
this.process_table_data(data)
} else {
}
})
}