// 本文件由FirstUI授权予四川政采招投标咨询有限公司(会员ID:16 3,营业执照号:91 5 1 013 13 3 2006 193 K)专用,请尊重知识产权,勿私下传播,违者追究法律责任。
|
class RequestTaskStore {
|
constructor(taskList = []) {
|
this.taskStore = taskList
|
}
|
setRequestTaskStore(taskArr, taskKey) {
|
taskKey && taskArr.push(taskKey)
|
this.taskStore = taskArr;
|
}
|
removeRequestTask(task) {
|
if (!task) return;
|
const taskKey = this.getRequestTask(task)
|
let taskArr = [...this.taskStore]
|
const index = taskArr.indexOf(taskKey)
|
if (~index) {
|
taskArr.splice(index, 1)
|
this.setRequestTaskStore(taskArr)
|
}
|
}
|
getRequestTask(task) {
|
let {
|
url,
|
method,
|
keys,
|
data
|
} = task;
|
keys = keys || []
|
data = typeof data === 'string' ? JSON.parse(data) : data;
|
let taskArr = [];
|
for (let key in data) {
|
if (data.hasOwnProperty(key) && !~keys.indexOf(key)) {
|
let value = data[key] === null ? '' : data[key];
|
taskArr.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));
|
}
|
}
|
return url + method + taskArr.join('');
|
}
|
requestTaskStore(task) {
|
let result = false;
|
if (!task) return result;
|
const taskKey = this.getRequestTask(task)
|
let taskArr = [...this.taskStore]
|
if (taskArr.length > 0) {
|
if (~taskArr.indexOf(taskKey)) {
|
result = true;
|
} else {
|
this.setRequestTaskStore(taskArr, taskKey)
|
}
|
} else {
|
taskKey && this.setRequestTaskStore(taskArr, taskKey)
|
}
|
return result;
|
}
|
}
|
export default function createTaskStore(taskList = []) {
|
return new RequestTaskStore(taskList)
|
}
|