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.
135 lines
2.9 KiB
135 lines
2.9 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 exportCrv = (url, fileName, head, formatter, param?, content?) => { |
|
if (!content) { |
|
content = [head + '\r\n']; |
|
} |
|
if (!param) { |
|
param = { page: 1, size: size }; |
|
} |
|
queryPage(url, param, true).then((rsp: any) => { |
|
if (!rsp || rsp.length == 0) { |
|
write(fileName, content); |
|
return; |
|
} |
|
rsp.data.forEach((net) => { |
|
content.push(formatter(net) + '\r\n'); |
|
}); |
|
if (rsp.data.length < size) { |
|
write(fileName, content); |
|
} else { |
|
param.page = param.page + 1; |
|
exportCrv(url, fileName, head, formatter, param, content); |
|
} |
|
}); |
|
}; |
|
const write = (name, content) => { |
|
var element = document.createElement('a'); |
|
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(content.join(''))); |
|
element.setAttribute('download', name); |
|
element.style.display = 'none'; |
|
document.body.appendChild(element); |
|
element.click(); |
|
document.body.removeChild(element); |
|
};
|
|
|