UNPKG

@xuanmo/v-form

Version:

* 目前已经集成的组件(Address/Checkbox/DatePicker/Input/Radio/Select/Text/Switch/Upload) * 组件不满足的情况可自定义开发组件或者使用 `slot` 的形式 * 组件的调用方式采取 `JSON` 配置的形式,具体参数见model数据说明 * 校验规则已经集成 `VeeValidate` 插件,也可以自定义扩展规则,更多资料 [https://logaretm.github.io/vee-validate](https://logaretm

47 lines (37 loc) 953 B
export default function request({ url = '', method = 'GET', headers = {}, dataType = 'text', data = {}, timeout = 30000, progress }) { return new Promise((resolve, reject) => { const xhr = new XMLHttpRequest() xhr.upload.addEventListener('progress', e => { typeof progress === 'function' && progress(e.loaded, e.total) }, false) xhr.onreadystatechange = function () { if (xhr.readyState === 4) { if (xhr.status === 200) { resolve(xhr.response) } else { reject(xhr) } } } // eslint-disable-next-line prefer-promise-reject-errors xhr.ontimeout = () => reject({ message: '请求超时' }) xhr.onerror = e => reject(e) xhr.open(method, url) for (const [key, val] of Object.entries(headers)) { xhr.setRequestHeader(key, val) } xhr.responseType = dataType xhr.timeout = timeout xhr.send(data) }) }