You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
3.2 KiB
145 lines
3.2 KiB
import { get, post, put, delate } from '../http/axios'; |
|
import { PageResult } from '../constant'; |
|
const pageResult = new PageResult(); |
|
|
|
export const queryPage = (url, example, noMsg?, noLoading?) => { |
|
return new Promise((resolve, reject) => { |
|
get(url, example, noMsg, noLoading).then( |
|
(rsp: any) => { |
|
if (rsp) { |
|
resolve(rsp); |
|
} else { |
|
resolve(pageResult); |
|
} |
|
}, |
|
(err) => { |
|
resolve(pageResult); |
|
} |
|
); |
|
}); |
|
}; |
|
|
|
export const queryList = (url, example?, noMsg?, noLoading?) => { |
|
return new Promise((resolve, reject) => { |
|
get(url, example, noMsg, noLoading).then( |
|
(rsp: any) => { |
|
if (rsp) { |
|
resolve(rsp); |
|
} else { |
|
resolve([]); |
|
} |
|
}, |
|
(err) => { |
|
resolve([]); |
|
} |
|
); |
|
}); |
|
}; |
|
|
|
export const getById = (url, id) => { |
|
return new Promise((resolve, reject) => { |
|
get(url + '/' + id).then( |
|
(rsp: any) => { |
|
resolve(rsp || {}); |
|
}, |
|
(err) => { |
|
resolve({}); |
|
} |
|
); |
|
}); |
|
}; |
|
|
|
export const save = (url, role) => { |
|
return new Promise((resolve, reject) => { |
|
post(url, role).then( |
|
(rsp: any) => { |
|
if (rsp) { |
|
resolve(rsp); |
|
} else { |
|
resolve(false); |
|
} |
|
}, |
|
(err) => { |
|
resolve(false); |
|
} |
|
); |
|
}); |
|
}; |
|
|
|
export const update = (url, role) => { |
|
return new Promise((resolve, reject) => { |
|
put(url, role).then( |
|
(rsp: any) => { |
|
if (rsp) { |
|
resolve(rsp); |
|
} else { |
|
resolve(false); |
|
} |
|
}, |
|
(err) => { |
|
resolve(false); |
|
} |
|
); |
|
}); |
|
}; |
|
|
|
export const deleteById = (url, id) => { |
|
return new Promise((resolve, reject) => { |
|
delate(url, id).then( |
|
(rsp: any) => { |
|
if (rsp) { |
|
resolve(rsp); |
|
} else { |
|
resolve(false); |
|
} |
|
}, |
|
(err) => { |
|
resolve(false); |
|
} |
|
); |
|
}); |
|
}; |
|
|
|
export const size = 10000; |
|
export const exportCsv = (url, head, formatter, param?, content?) => { |
|
return new Promise((resolve) => { |
|
if (!content) { |
|
content = []; |
|
head && content.push(head); |
|
} |
|
if (!param) { |
|
param = { page: 1, size: size }; |
|
} |
|
queryPage(url, param, true, true).then((rsp: any) => { |
|
debugger; |
|
if (!rsp || rsp.data.length == 0) { |
|
resolve(content.join('\r\n')); |
|
return; |
|
} |
|
rsp.data.forEach((net) => { |
|
content.push(formatter(net)); |
|
}); |
|
if (rsp.data.length < param.size) { |
|
resolve(content.join('\r\n')); |
|
} else { |
|
param.page = param.page + 1; |
|
exportCsv(url, head, formatter, param, content).then(resolve); |
|
} |
|
}); |
|
}); |
|
}; |
|
export const downloadText = (name, text) => { |
|
downloadFile(name, 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); |
|
}; |
|
export const downloadBlob = (name, blob) => { |
|
downloadFile(name, URL.createObjectURL(blob)); |
|
}; |
|
export const downloadFile = (name, href) => { |
|
var element = document.createElement('a'); |
|
element.setAttribute('href', href); |
|
element.setAttribute('download', name); |
|
element.style.display = 'none'; |
|
document.body.appendChild(element); |
|
element.click(); |
|
document.body.removeChild(element); |
|
};
|
|
|