|
|
@@ -4,15 +4,15 @@
|
|
|
|
|
|
// ============ 配置区域 ============
|
|
|
|
|
|
-const ENV = 'prod' // 'dev' | 'prod'
|
|
|
+var ENV = 'prod' // 'dev' | 'prod'
|
|
|
|
|
|
-const CONFIG = {
|
|
|
+var CONFIG = {
|
|
|
dev: 'https://www.whzhangsheng.cn/applet-api', // 开发环境
|
|
|
local:'http://192.168.1.171:8081',
|
|
|
- prod: 'https://applet.whzhangsheng.cn/applet-api',
|
|
|
+ prod: 'https://applet.whzhangsheng.cn/applet-api',
|
|
|
}
|
|
|
|
|
|
-const BASE_URL = CONFIG[ENV]
|
|
|
+var BASE_URL = CONFIG[ENV]
|
|
|
// ============ 配置区域结束 ============
|
|
|
|
|
|
/**
|
|
|
@@ -21,22 +21,22 @@ const BASE_URL = CONFIG[ENV]
|
|
|
* @param {string} url - 图片路径(可能是相对路径或完整URL)
|
|
|
* @returns {string} 完整的图片URL
|
|
|
*/
|
|
|
-export const getImageUrl = (url) => {
|
|
|
+export var getImageUrl = function(url) {
|
|
|
if (!url) return ''
|
|
|
|
|
|
// 检测微信临时路径,这些路径在真机上无法访问,返回空让前端显示默认头像
|
|
|
- if (url.startsWith('wxfile://') || url.startsWith('http://tmp/') || url.includes('/tmp/wx')) {
|
|
|
+ if (url.indexOf('wxfile://') === 0 || url.indexOf('http://tmp/') === 0 || url.indexOf('/tmp/wx') !== -1) {
|
|
|
console.warn('[getImageUrl] 检测到微信临时路径,无法显示:', url)
|
|
|
return ''
|
|
|
}
|
|
|
|
|
|
// 已经是完整URL,直接返回
|
|
|
- if (url.startsWith('http')) {
|
|
|
+ if (url.indexOf('http') === 0) {
|
|
|
return url
|
|
|
}
|
|
|
|
|
|
// 本地静态资源路径,转换为服务器路径
|
|
|
- if (url.startsWith('/static/images/')) {
|
|
|
+ if (url.indexOf('/static/images/') === 0) {
|
|
|
return BASE_URL + url.replace('/static/images/', '/images/')
|
|
|
}
|
|
|
|
|
|
@@ -50,7 +50,7 @@ export { BASE_URL }
|
|
|
/**
|
|
|
* 获取本地存储的token(避免循环依赖)
|
|
|
*/
|
|
|
-const getToken = () => {
|
|
|
+var getToken = function() {
|
|
|
return uni.getStorageSync('user_token') || null
|
|
|
}
|
|
|
|
|
|
@@ -60,32 +60,38 @@ const getToken = () => {
|
|
|
* @param {object} options - 请求配置对象
|
|
|
* @returns {Promise} 请求Promise
|
|
|
*/
|
|
|
-const request = (options) => {
|
|
|
- return new Promise((resolve, reject) => {
|
|
|
+var request = function(options) {
|
|
|
+ return new Promise(function(resolve, reject) {
|
|
|
// 获取token并添加到请求头
|
|
|
- const token = getToken()
|
|
|
- const header = options.header || {}
|
|
|
+ var token = getToken()
|
|
|
+ var header = options.header || {}
|
|
|
if (token) {
|
|
|
- header['Authorization'] = `Bearer ${token}`
|
|
|
+ header['Authorization'] = 'Bearer ' + token
|
|
|
}
|
|
|
|
|
|
// 公开接口列表(不需要登录的接口)
|
|
|
- const publicApis = [
|
|
|
+ var publicApis = [
|
|
|
'/v1/stock/pool/list',
|
|
|
'/v1/order/config'
|
|
|
]
|
|
|
|
|
|
// 判断是否为公开接口
|
|
|
- const isPublicApi = publicApis.some(api => options.url.includes(api))
|
|
|
+ var isPublicApi = false
|
|
|
+ for (var i = 0; i < publicApis.length; i++) {
|
|
|
+ if (options.url.indexOf(publicApis[i]) !== -1) {
|
|
|
+ isPublicApi = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
uni.request({
|
|
|
- url: `${BASE_URL}${options.url}`,
|
|
|
+ url: BASE_URL + options.url,
|
|
|
method: options.method || 'GET',
|
|
|
data: options.data || {},
|
|
|
header: header,
|
|
|
- success: (res) => {
|
|
|
+ success: function(res) {
|
|
|
// 检查是否有新token(滑动续期)
|
|
|
- const newToken = res.header['New-Token'] || res.header['new-token']
|
|
|
+ var newToken = res.header['New-Token'] || res.header['new-token']
|
|
|
if (newToken) {
|
|
|
console.log('检测到新token,自动续期')
|
|
|
uni.setStorageSync('user_token', newToken)
|
|
|
@@ -112,13 +118,13 @@ const request = (options) => {
|
|
|
uni.removeStorageSync('user_info')
|
|
|
|
|
|
// 延迟后显示登录弹窗
|
|
|
- setTimeout(() => {
|
|
|
+ setTimeout(function() {
|
|
|
uni.showModal({
|
|
|
title: '登录提示',
|
|
|
content: '登录已过期,请重新登录',
|
|
|
confirmText: '去登录',
|
|
|
cancelText: '取消',
|
|
|
- success: (modalRes) => {
|
|
|
+ success: function(modalRes) {
|
|
|
if (modalRes.confirm) {
|
|
|
// 跳转到登录页面
|
|
|
uni.navigateTo({
|
|
|
@@ -134,7 +140,7 @@ const request = (options) => {
|
|
|
reject(new Error(res.data.message || '服务暂不可用'))
|
|
|
}
|
|
|
},
|
|
|
- fail: () => {
|
|
|
+ fail: function() {
|
|
|
reject(new Error('网络异常'))
|
|
|
}
|
|
|
})
|
|
|
@@ -149,11 +155,11 @@ const request = (options) => {
|
|
|
* @param {string} redirectUrl - 授权后的回调地址
|
|
|
* @returns {Promise} 返回微信授权URL
|
|
|
*/
|
|
|
-export const getH5AuthUrl = (redirectUrl) => {
|
|
|
+export var getH5AuthUrl = function(redirectUrl) {
|
|
|
return request({
|
|
|
url: '/v1/auth/h5/auth-url',
|
|
|
method: 'GET',
|
|
|
- data: { redirectUrl }
|
|
|
+ data: { redirectUrl: redirectUrl }
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -162,11 +168,11 @@ export const getH5AuthUrl = (redirectUrl) => {
|
|
|
* @param {string} code - 微信授权code
|
|
|
* @returns {Promise} 返回用户信息
|
|
|
*/
|
|
|
-export const h5AuthCallback = (code) => {
|
|
|
+export var h5AuthCallback = function(code) {
|
|
|
return request({
|
|
|
url: '/v1/auth/h5/callback',
|
|
|
method: 'GET',
|
|
|
- data: { code }
|
|
|
+ data: { code: code }
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -175,11 +181,11 @@ export const h5AuthCallback = (code) => {
|
|
|
* @param {string} openid - 微信openid
|
|
|
* @returns {Promise} 返回 { data: boolean }
|
|
|
*/
|
|
|
-export const checkUserStatus = (openid) => {
|
|
|
+export var checkUserStatus = function(openid) {
|
|
|
return request({
|
|
|
url: '/v1/auth/h5/check-user',
|
|
|
method: 'GET',
|
|
|
- data: { openid }
|
|
|
+ data: { openid: openid }
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -188,7 +194,7 @@ export const checkUserStatus = (openid) => {
|
|
|
* @param {object} params - { openid, code, nickname, avatarUrl, unionid }
|
|
|
* @returns {Promise} 返回 { token }
|
|
|
*/
|
|
|
-export const h5PhoneLogin = (params) => {
|
|
|
+export var h5PhoneLogin = function(params) {
|
|
|
return request({
|
|
|
url: '/v1/auth/h5/phone-login',
|
|
|
method: 'POST',
|
|
|
@@ -208,7 +214,7 @@ export const h5PhoneLogin = (params) => {
|
|
|
* @param {object} params - { loginCode }
|
|
|
* @returns {Promise} 返回 { isSign, token?, code? }
|
|
|
*/
|
|
|
-export const wxSilentLoginApi = (params) => {
|
|
|
+export var wxSilentLoginApi = function(params) {
|
|
|
return request({
|
|
|
url: '/v1/auth/wx/silent-login',
|
|
|
method: 'POST',
|
|
|
@@ -224,7 +230,7 @@ export const wxSilentLoginApi = (params) => {
|
|
|
* @param {object} params - { loginCode, phoneCode, encryptedData, iv }
|
|
|
* @returns {Promise} 返回 { isSign, token?, openid?, unionid?, phoneNumber? }
|
|
|
*/
|
|
|
-export const wxPhoneLoginApi = (params) => {
|
|
|
+export var wxPhoneLoginApi = function(params) {
|
|
|
return request({
|
|
|
url: '/v1/auth/wx/phone-verify',
|
|
|
method: 'POST',
|
|
|
@@ -240,7 +246,7 @@ export const wxPhoneLoginApi = (params) => {
|
|
|
* @param {object} params - { openid, unionid, phoneNumber, nickname, avatarUrl }
|
|
|
* @returns {Promise} 返回 { token }
|
|
|
*/
|
|
|
-export const wxCompleteUserInfoApi = (params) => {
|
|
|
+export var wxCompleteUserInfoApi = function(params) {
|
|
|
return request({
|
|
|
url: '/v1/auth/wx/register',
|
|
|
method: 'POST',
|
|
|
@@ -256,7 +262,7 @@ export const wxCompleteUserInfoApi = (params) => {
|
|
|
* 获取用户完整信息接口
|
|
|
* @returns {Promise} 返回用户信息
|
|
|
*/
|
|
|
-export const getUserInfoApi = () => {
|
|
|
+export var getUserInfoApi = function() {
|
|
|
return request({
|
|
|
url: '/v1/user/info',
|
|
|
method: 'GET'
|
|
|
@@ -266,8 +272,8 @@ export const getUserInfoApi = () => {
|
|
|
/**
|
|
|
* 文件上传配置
|
|
|
*/
|
|
|
-export const uploadFile = {
|
|
|
- url: `${BASE_URL}/v1/file/upload`
|
|
|
+export var uploadFile = {
|
|
|
+ url: BASE_URL + '/v1/file/upload'
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -277,7 +283,7 @@ export const uploadFile = {
|
|
|
* @param {string} data.avatar - 头像URL
|
|
|
* @returns {Promise} 返回更新结果
|
|
|
*/
|
|
|
-export const updateUserProfile = (data) => {
|
|
|
+export var updateUserProfile = function(data) {
|
|
|
return request({
|
|
|
url: '/v1/user/profile',
|
|
|
method: 'PUT',
|
|
|
@@ -293,11 +299,11 @@ export const updateUserProfile = (data) => {
|
|
|
* @param {string} keyword - 搜索关键词
|
|
|
* @returns {Promise} 返回搜索建议列表
|
|
|
*/
|
|
|
-export const getSuggestions = (keyword) => {
|
|
|
+export var getSuggestions = function(keyword) {
|
|
|
return request({
|
|
|
url: '/v1/stock/suggestion',
|
|
|
method: 'GET',
|
|
|
- data: { keyword }
|
|
|
+ data: { keyword: keyword }
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -306,14 +312,14 @@ export const getSuggestions = (keyword) => {
|
|
|
* @param {string} keyword - 股票代码或名称
|
|
|
* @returns {Promise} 返回股票详情信息
|
|
|
*/
|
|
|
-export const searchStocks = (keyword) => {
|
|
|
+export var searchStocks = function(keyword) {
|
|
|
return request({
|
|
|
url: '/v1/stock/search',
|
|
|
method: 'POST',
|
|
|
header: {
|
|
|
'content-type': 'application/json'
|
|
|
},
|
|
|
- data: { keyword }
|
|
|
+ data: { keyword: keyword }
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -322,11 +328,11 @@ export const searchStocks = (keyword) => {
|
|
|
* @param {string} codes - 股票代码,多个用逗号分隔
|
|
|
* @returns {Promise} 返回股票行情数据列表
|
|
|
*/
|
|
|
-export const getStockQuotes = (codes) => {
|
|
|
+export var getStockQuotes = function(codes) {
|
|
|
return request({
|
|
|
url: '/api/stock/fetch',
|
|
|
method: 'GET',
|
|
|
- data: { codes }
|
|
|
+ data: { codes: codes }
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -335,11 +341,11 @@ export const getStockQuotes = (codes) => {
|
|
|
* @param {string} code - 指数代码 (000001=上证指数, 399001=深证成指, 399006=创业板指)
|
|
|
* @returns {Promise} 返回指数数据
|
|
|
*/
|
|
|
-export const getIndexQuote = (code) => {
|
|
|
+export var getIndexQuote = function(code) {
|
|
|
return request({
|
|
|
url: '/api/stock/index',
|
|
|
method: 'GET',
|
|
|
- data: { code }
|
|
|
+ data: { code: code }
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -347,7 +353,7 @@ export const getIndexQuote = (code) => {
|
|
|
* 获取用户自选股票列表
|
|
|
* @returns {Promise} 返回用户自选股票列表
|
|
|
*/
|
|
|
-export const getUserStocks = () => {
|
|
|
+export var getUserStocks = function() {
|
|
|
return request({
|
|
|
url: '/v1/user/stock/list',
|
|
|
method: 'GET'
|
|
|
@@ -359,7 +365,7 @@ export const getUserStocks = () => {
|
|
|
* @param {object} data - { stockCode, stockName, poolType, currentPrice }
|
|
|
* @returns {Promise} 返回添加结果
|
|
|
*/
|
|
|
-export const addUserStock = (data) => {
|
|
|
+export var addUserStock = function(data) {
|
|
|
return request({
|
|
|
url: '/v1/user/stock/add',
|
|
|
method: 'POST',
|
|
|
@@ -375,9 +381,9 @@ export const addUserStock = (data) => {
|
|
|
* @param {string} stockCode - 股票代码
|
|
|
* @returns {Promise} 返回删除结果
|
|
|
*/
|
|
|
-export const deleteUserStock = (stockCode) => {
|
|
|
+export var deleteUserStock = function(stockCode) {
|
|
|
return request({
|
|
|
- url: `/v1/user/stock/delete?stockCode=${encodeURIComponent(stockCode)}`,
|
|
|
+ url: '/v1/user/stock/delete?stockCode=' + encodeURIComponent(stockCode),
|
|
|
method: 'DELETE'
|
|
|
})
|
|
|
}
|
|
|
@@ -389,11 +395,11 @@ export const deleteUserStock = (stockCode) => {
|
|
|
* @param {number} poolType - 池类型:1-超短池,2-强势池
|
|
|
* @returns {Promise} 返回股票池列表
|
|
|
*/
|
|
|
-export const getStockPoolList = (poolType) => {
|
|
|
+export var getStockPoolList = function(poolType) {
|
|
|
return request({
|
|
|
url: '/v1/stock/pool/list',
|
|
|
method: 'GET',
|
|
|
- data: { poolType }
|
|
|
+ data: { poolType: poolType }
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -405,11 +411,11 @@ export const getStockPoolList = (poolType) => {
|
|
|
* @param {number} poolType - 池类型:1-超短池,2-强势池
|
|
|
* @returns {Promise} 返回 { poolType, poolName, price, description }
|
|
|
*/
|
|
|
-export const getPaymentConfig = (poolType) => {
|
|
|
+export var getPaymentConfig = function(poolType) {
|
|
|
return request({
|
|
|
url: '/v1/order/config',
|
|
|
method: 'GET',
|
|
|
- data: { poolType }
|
|
|
+ data: { poolType: poolType }
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -418,7 +424,7 @@ export const getPaymentConfig = (poolType) => {
|
|
|
* @param {object} data - { poolType }
|
|
|
* @returns {Promise} 返回微信支付参数
|
|
|
*/
|
|
|
-export const createOrder = (data) => {
|
|
|
+export var createOrder = function(data) {
|
|
|
return request({
|
|
|
url: '/v1/order/create',
|
|
|
method: 'POST',
|
|
|
@@ -434,11 +440,11 @@ export const createOrder = (data) => {
|
|
|
* @param {string} orderNo - 订单号
|
|
|
* @returns {Promise} 返回订单信息
|
|
|
*/
|
|
|
-export const queryOrder = (orderNo) => {
|
|
|
+export var queryOrder = function(orderNo) {
|
|
|
return request({
|
|
|
url: '/v1/order/query',
|
|
|
method: 'GET',
|
|
|
- data: { orderNo }
|
|
|
+ data: { orderNo: orderNo }
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -446,7 +452,7 @@ export const queryOrder = (orderNo) => {
|
|
|
* 获取用户订单列表
|
|
|
* @returns {Promise} 返回订单列表
|
|
|
*/
|
|
|
-export const getUserOrders = () => {
|
|
|
+export var getUserOrders = function() {
|
|
|
return request({
|
|
|
url: '/v1/order/list',
|
|
|
method: 'GET'
|
|
|
@@ -458,9 +464,9 @@ export const getUserOrders = () => {
|
|
|
* @param {string} orderNo - 订单号
|
|
|
* @returns {Promise} 返回微信支付参数
|
|
|
*/
|
|
|
-export const repayOrder = (orderNo) => {
|
|
|
+export var repayOrder = function(orderNo) {
|
|
|
return request({
|
|
|
- url: `/v1/order/repay?orderNo=${encodeURIComponent(orderNo)}`,
|
|
|
+ url: '/v1/order/repay?orderNo=' + encodeURIComponent(orderNo),
|
|
|
method: 'POST'
|
|
|
})
|
|
|
}
|
|
|
@@ -470,11 +476,11 @@ export const repayOrder = (orderNo) => {
|
|
|
* @param {number} poolType - 池类型:1-超短池,2-强势池
|
|
|
* @returns {Promise} 返回 { hasSubscription: boolean, poolType: number }
|
|
|
*/
|
|
|
-export const checkSubscription = (poolType) => {
|
|
|
+export var checkSubscription = function(poolType) {
|
|
|
return request({
|
|
|
url: '/v1/order/check-subscription',
|
|
|
method: 'GET',
|
|
|
- data: { poolType }
|
|
|
+ data: { poolType: poolType }
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -483,16 +489,16 @@ export const checkSubscription = (poolType) => {
|
|
|
* @param {object} payParams - 支付参数(从createOrder返回)
|
|
|
* @returns {Promise}
|
|
|
*/
|
|
|
-export const wxPay = (payParams) => {
|
|
|
+export var wxPay = function(payParams) {
|
|
|
// 兼容 total_fee 和 totalFee 两种命名
|
|
|
- const totalFee = payParams.total_fee || payParams.totalFee
|
|
|
+ var totalFee = payParams.total_fee || payParams.totalFee
|
|
|
console.log('调起支付,参数:', JSON.stringify(payParams), 'totalFee:', totalFee)
|
|
|
|
|
|
if (!totalFee) {
|
|
|
console.error('缺少 total_fee 参数,payParams:', payParams)
|
|
|
}
|
|
|
|
|
|
- return new Promise((resolve, reject) => {
|
|
|
+ return new Promise(function(resolve, reject) {
|
|
|
// 优先判断小程序环境(避免在小程序中误用 WeixinJSBridge)
|
|
|
if (typeof uni !== 'undefined' && uni.requestPayment) {
|
|
|
// 小程序环境使用uni.requestPayment
|
|
|
@@ -504,12 +510,12 @@ export const wxPay = (payParams) => {
|
|
|
package: payParams.packageValue,
|
|
|
signType: payParams.signType,
|
|
|
paySign: payParams.paySign,
|
|
|
- success: (res) => {
|
|
|
+ success: function(res) {
|
|
|
resolve(res)
|
|
|
},
|
|
|
- fail: (err) => {
|
|
|
+ fail: function(err) {
|
|
|
console.log('支付失败:', err)
|
|
|
- if (err.errMsg && err.errMsg.includes('cancel')) {
|
|
|
+ if (err.errMsg && err.errMsg.indexOf('cancel') !== -1) {
|
|
|
reject(new Error('用户取消支付'))
|
|
|
} else {
|
|
|
reject(new Error('支付失败:' + (err.errMsg || JSON.stringify(err))))
|
|
|
@@ -526,7 +532,7 @@ export const wxPay = (payParams) => {
|
|
|
package: payParams.packageValue,
|
|
|
signType: payParams.signType,
|
|
|
paySign: payParams.paySign
|
|
|
- }, (res) => {
|
|
|
+ }, function(res) {
|
|
|
if (res.err_msg === 'get_brand_wcpay_request:ok') {
|
|
|
resolve(res)
|
|
|
} else if (res.err_msg === 'get_brand_wcpay_request:cancel') {
|
|
|
@@ -551,11 +557,11 @@ export const wxPay = (payParams) => {
|
|
|
* @param {string} type - 协议类型:'user' 用户协议,'privacy' 隐私政策
|
|
|
* @returns {Promise} 返回协议HTML内容
|
|
|
*/
|
|
|
-export const getAgreementContent = (type) => {
|
|
|
+export var getAgreementContent = function(type) {
|
|
|
return request({
|
|
|
url: '/v1/agreement/content',
|
|
|
method: 'GET',
|
|
|
- data: { type }
|
|
|
+ data: { type: type }
|
|
|
})
|
|
|
}
|
|
|
|
|
|
@@ -571,7 +577,7 @@ export const getAgreementContent = (type) => {
|
|
|
* @param {number} params.pageSize - 每页数量
|
|
|
* @returns {Promise} 返回历史数据列表和分页信息
|
|
|
*/
|
|
|
-export const getStockHistory = (params) => {
|
|
|
+export var getStockHistory = function(params) {
|
|
|
return request({
|
|
|
url: '/v1/stock/history/list',
|
|
|
method: 'GET',
|
|
|
@@ -587,7 +593,7 @@ export const getStockHistory = (params) => {
|
|
|
* @param {number} params.poolType - 池类型:1-超短池,2-强势池
|
|
|
* @returns {Promise} 返回统计数据
|
|
|
*/
|
|
|
-export const getStockHistoryStats = (params) => {
|
|
|
+export var getStockHistoryStats = function(params) {
|
|
|
return request({
|
|
|
url: '/v1/stock/history/stats',
|
|
|
method: 'GET',
|
|
|
@@ -601,8 +607,8 @@ export const getStockHistoryStats = (params) => {
|
|
|
* @param {string} recordDate - 可选的记录日期 (yyyy-MM-dd)
|
|
|
* @returns {Promise} 返回股票历史数据
|
|
|
*/
|
|
|
-export const searchStockHistory = (keyword, recordDate) => {
|
|
|
- const data = { keyword }
|
|
|
+export var searchStockHistory = function(keyword, recordDate) {
|
|
|
+ var data = { keyword: keyword }
|
|
|
if (recordDate) {
|
|
|
data.recordDate = recordDate
|
|
|
}
|
|
|
@@ -620,7 +626,7 @@ export const searchStockHistory = (keyword, recordDate) => {
|
|
|
* @param {string} data.images - 图片URL列表,逗号分隔
|
|
|
* @returns {Promise} 返回提交结果
|
|
|
*/
|
|
|
-export const submitFeedback = (data) => {
|
|
|
+export var submitFeedback = function(data) {
|
|
|
console.log('[submitFeedback] 开始提交反馈,数据:', data)
|
|
|
return request({
|
|
|
url: '/v1/user/feedback/submit',
|
|
|
@@ -636,6 +642,6 @@ export const submitFeedback = (data) => {
|
|
|
* 上传反馈图片
|
|
|
* 注意:此函数返回上传配置,实际上传需使用 uni.uploadFile
|
|
|
*/
|
|
|
-export const uploadFeedbackImage = {
|
|
|
- url: `${BASE_URL}/v1/file/upload`
|
|
|
+export var uploadFeedbackImage = {
|
|
|
+ url: BASE_URL + '/v1/file/upload'
|
|
|
}
|