合并makeServerUrl 和 make_ipfs_url 到 make_server_url

This commit is contained in:
陆柯 2023-06-26 13:00:04 +08:00
parent 0086915515
commit bc5c0a5eb4

View File

@ -109,31 +109,39 @@ export default {
} }
}, },
makeServerUrl (route = '') { make_server_url (route) {
if (typeof route === 'string') route = route.replace('\\', '/')
else if (typeof route === 'object') {
const { apiVersion = 'api', apiWho, apiTodo } = route
route = `${apiVersion}/${apiWho}/${apiTodo}`
} else {
// 防止 route 为 null, undefined 等由于后台数据库默认值而造成的异常。
route = ''
}
// 已是完整url
if (/^https?:\/\//.test(route)) { if (/^https?:\/\//.test(route)) {
return route return route
} }
// 本地图片
if (typeof route !== 'string') route = '' // 防止 route 为 null, undefined 等由于后台数据库默认值而造成的异常。 if (/^\/static\//.test(route)) {
route = route.replace('\\', '/').replace(/^\//, '') return route
}
// cid
if (/^[\da-zA-Z]+$/.test(route)) {
return (wo?.ss?.envarRemote?.ipfsGateway || '') + route
}
// 需要组装url
const envar = this.envar || wo?.envar || {} const envar = this.envar || wo?.envar || {}
route = route.replace(/^\//, '')
// 已有现成后端服务域名
if (envar.servUrl) { if (envar.servUrl) {
return `${envar.servUrl}/${route}` return `${envar.servUrl}/${route}`
} else { }
// 需要组装后端服务域名
const hostname = envar.servHostname /*|| globalThis.window?.location?.hostname*/ || 'localhost' const hostname = envar.servHostname /*|| globalThis.window?.location?.hostname*/ || 'localhost'
const port = envar.servPort /*|| globalThis.window?.location?.port*/ || '' const port = envar.servPort /*|| globalThis.window?.location?.port*/ || ''
const protocol = hostname === 'localhost' ? 'http' : envar.servProtocol || (process.env.NODE_ENV === 'production' ? 'https' : 'http') const protocol = hostname === 'localhost' ? 'http' : envar.servProtocol || (process.env.NODE_ENV === 'production' ? 'https' : 'http')
return `${protocol}://${hostname}${port ? ':' : ''}${port}/${route}` return `${protocol}://${hostname}${port ? ':' : ''}${port}/${route}`
}
},
makeBgUrl (path) {
if (path) {
return `url(${this.makeServerUrl(path)})`
}
return ''
}, },
/** uni.request uniCloud.callFunction /** uni.request uniCloud.callFunction
@ -191,7 +199,7 @@ export default {
apiWhat[key] = JSON.stringify(apiWhat[key]) apiWhat[key] = JSON.stringify(apiWhat[key])
} }
} }
url = this.makeServerUrl(`${apiVersion}/${apiWho}/${apiTodo}`) url = this.make_server_url(`${apiVersion}/${apiWho}/${apiTodo}`)
let [error, { statusCode, header, errMsg, data: resultServer = {} } = {}] = await uni.request({ let [error, { statusCode, header, errMsg, data: resultServer = {} } = {}] = await uni.request({
method: httpMethod, method: httpMethod,
url: url, url: url,
@ -271,7 +279,7 @@ export default {
formData['_passtoken'] = uni.getStorageSync('_passtoken') // 20230527 加回这一句,让后台可以根据验证用户来决定怎样处理文件。 formData['_passtoken'] = uni.getStorageSync('_passtoken') // 20230527 加回这一句,让后台可以根据验证用户来决定怎样处理文件。
uni.showLoading() uni.showLoading()
let [errorUpload, { data, statusCode } = {}] = await uni.uploadFile({ url: this.makeServerUrl(url), filePath, name, header, formData }) let [errorUpload, { data, statusCode } = {}] = await uni.uploadFile({ url: this.make_server_url(url), filePath, name, header, formData })
// 后台 Multer 处理 req.file = { destination, filename, originalname, path, mimetype, size }, 其中 path 包括了 destination 和 filename 的文件相对路径。 // 后台 Multer 处理 req.file = { destination, filename, originalname, path, mimetype, size }, 其中 path 包括了 destination 和 filename 的文件相对路径。
// url 所在方法进一步处理后,通过 uni.uploadFile 存在 data 里返回结果 // url 所在方法进一步处理后,通过 uni.uploadFile 存在 data 里返回结果
uni.hideLoading() uni.hideLoading()
@ -286,7 +294,7 @@ export default {
} }
if (data?._state === 'SUCCESS' && data?.path) { if (data?._state === 'SUCCESS' && data?.path) {
return { _state: 'SUCCESS', fileUrl: this.makeServerUrl(data.path), filePath: data.path, ...data } return { _state: 'SUCCESS', fileUrl: this.make_server_url(data.path), filePath: data.path, ...data }
} else { } else {
return { _state: 'CLIENT_FAIL_UPLOAD_FILE', error: errorUpload } return { _state: 'CLIENT_FAIL_UPLOAD_FILE', error: errorUpload }
} }
@ -452,12 +460,33 @@ export default {
} }
// #ifdef APP-PLUS // #ifdef APP-PLUS
uni.showToast({ icon: 'none', title, duration, ...rest }) uni.showToast({ icon: 'none', title, duration, ...rest })
// plus.nativeUI.toast( title, { align: center/left/right, verticalAlign: bottom/center/top, duration:long/short, icon, iconWidth, iconHeight, style: block/inline }) 对应 plus.nativeUI.closeToast()
// #endif // #endif
// #ifdef H5 // #ifndef APP-PLUS
uni.showToast({ icon: 'none', image, title, duration, ...rest }) uni.showToast({ icon: 'none', image, title, duration, ...rest })
// #endif // #endif
}, },
showLoading ({ title, mask }) {
// #ifndef APP-PLUS
uni.showLoading({ title, mask })
// #endif
// #ifdef APP-PLUS
// 在安卓应用里uni.showLoading() 重复调用,导致不断闪烁跳动。
// plus.nativeUI.showWaiting() 调用多了则导致死机。
// 还好showWaiting() 返回 waiting 对象,可以 waiting.setTitle()
return plus.nativeUI.showWaiting(title, { modal: mask })
// #endif
},
hideLoading () {
// #ifndef APP-PLUS
uni.hideLoading()
// #endif
// #ifdef APP-PLUS
plus.nativeUI.closeWaiting()
// #endif
},
// precision 要有默认值,以防无法连接后台时,这个方法会导致 part-header.vue 出错。 // precision 要有默认值,以防无法连接后台时,这个方法会导致 part-header.vue 出错。
formatMoney (amount, { precision = 2 } = {}) { formatMoney (amount, { precision = 2 } = {}) {
// parseInt(NaN/undefined/false/null/'') 都返回 NaN而 Number(false/null/'')===0因此用 parseInt 来过滤无效输入。 // parseInt(NaN/undefined/false/null/'') 都返回 NaN而 Number(false/null/'')===0因此用 parseInt 来过滤无效输入。